분류 전체보기

· Books
"오브젝트: 코드로 이해하는 객체지향 설계" 책의 기록입니다. 협력 협력이란, 어떤 객체가 다른 객체에게 무엇인가를 요청하는 것 메시지 전송: 객체 사이의 협력을 위해 사용할 수 있는 유일한 커뮤니케이션 수단 메시지를 수신한 객체는 메서드를 실행해 요청에 응답 객체가 메시지를 처리할 방법을 스스로 선택! → 자신의 일을 스스로 처리하는 자율적인 존재 객체를 자율적으로 만드는 기본적인 방법은 내부 구현을 캡슐화하는 것 협력이 설계를 위한 문맥을 결정 객체의 행동을 결정하는 것은 객체가 참여하고 있는 협력 객체의 상태를 결정하는 것은 행동 결론적으로, 협력이 객체를 구성하는 행동과 상태를 모두 결정 → 객체 설계에 필요한 문맥을 제공 책임 협력에 참여하기 위해 객체가 수행하는 행동 무엇을 알고 있는가(kno..
· Algorithm
https://www.acmicpc.net/problem/16500 머리말 완전 탐색인 줄 알고 왜 시간 초과가 나지 쩔쩔 맺던.. (테스트케이스 완전 불친절하다 😇) 이 문제는 dp 문제이다. 가만 생각해보면 중복 연산이 많으니 메모이제이션을 당연히 해야 한다. 처음 참고한 블로그도 좋은 풀이법이지만, 다른 분(cozyyg)의 풀이가 더 직관적이어서 그 풀이로 다시 공부하였다. 접근 방법 dp 배열에는 해당 인덱스까지 A에 포함된 문자열로 표현할 수 있는지 여부를 0, 1로 저장한다. 초기값 dp[0]은 1(True)로 두고, 우리의 목표는 dp[len(s)]값이 무엇인지 찾는 것이다. 계산 편의를 위해 +1 위치에 결괏값을 저장한다. 추가 테스트 케이스 1 [input] aaaaaaaaaa 2 aaa..
· Algorithm
https://acmicpc.net/problem/12865 머리말 0/1 Knapsack 문제 DP로 유명한 문제이자 NP-hard 문제로 유명한 문제.. 작년 알고리즘 수업시간 때 배웠던 부분이 기억이 잘 나지 않아 첨부하였다. 수업 노트 코드 n, k = map(int, input().split()) weights = [-1] values = [-1] for i in range(n): w, v = map(int, input().split()) weights.append(w) values.append(v) dp = [[0] * (k + 1) for _ in range(n + 1)] for i in range(1, n + 1): for w in range(1, k + 1): if weights[i]
· Algorithm
2020 KAKAO BLIND RECRUITMENT https://school.programmers.co.kr/learn/courses/30/lessons/17677 머리말 풀이 시간 40분 다중집합의 교집합과 차집합을 어떻게 구할지 몰라 검색해서 알아보았다. 그런데 문제를 다시 보니 해당 부분 어떻게 처리할지 알려줬더라 ㅎㅎ;; 다른 풀이 방법을 보니 엄청 깔끔하니 이것도 참고해보자. 접근 방법 문제의 요구사항을 차근차근 적용하여 풀었다. 다중집합의 합집합과 교집합을 구하는 방법은 [더 알아보기]를 참조하길 바란다. 🐥 이건 얻어가자 str.upper(): 문자열을 모두 대문자로 변경 str.isalpha(): 문자열이 알파벳인지 확인 코드 def solution(str1, str2): answer =..
· Algorithm
2020 KAKAO BLIND RECRUITMENT https://school.programmers.co.kr/learn/courses/30/lessons/60058 머리말 풀이 시간 50분 컴파일러 수업을 잘 들었다면 수월하게 풀었을 것 같다는 느낌.. 카카오에서 컴파일러 관련 문제도 내는구나 싶었다. 접근 방법 정말 다행인 것은 문제에서 접근 방법을 친절히 설명해준다;; 재귀 함수 쓰는 방법도 다 알려줘서 그거 따라서 하면 쭉 하면 문제없이 풀이할 수 있다. 균형 잡힌 괄호 문자열은 다음과 같이 판별했다. left와 right변수를 선언한다. 문자열을 앞에서부터 탐색하면서 (가 나오면 left를 증가시키고 )가 나오면 right를 증가시키는데 그 갯수가 같아지는 그 시점에서 문자열을 u와 v로 분리하..
· Algorithm
2021 카카오 블라인드 채용https://school.programmers.co.kr/learn/courses/30/lessons/72411머리말풀이 시간 1시간 5분처음 생각한 로직을 쭉 풀어쓰다가 문제에서 이해하지 못한 부분 때문에 코드가 난잡해졌다.접근 방법2번 예제에서 왜 AB는 답에 포함되지 않을까 고민을 많이 했다.하지만 문제에서 가장 많이 함께 주문한 단품 메뉴들을 코스요리 메뉴로 구성 이라는 말을 잘 생각해야 한다.AB도 2번 이상 포함되기는 하지만, AD, CD가 3번씩 포함되므로 이것만 답에 포함시켜야 한다.나는 다음과 같은 로직으로 문제를 풀었다.단품 메뉴 가장 많이 주문한 사람의 개수를 maxLen에 저장한다.그 개수가 course 보다 작다면 확인할 필요가 없..
· Study log
2022년 상반기가 마무리되었다. 1월부터 2월까지는 현장 실습 및 휴가로 인해 공부 데이터가 좋지 않다. 3월부터 6월까지는 4학년 1학기를 진행했고, 종합설계프로젝트2, 고급문제해결, 인공지능, 컴퓨터그래픽스, 심리학의이해. 이렇게 16학점을 들었다. 학점은 교양 빼고 잘 나왔다. 무엇보다 4학점짜리인 종합설계프로젝트2를 A+ 받아서 기분이 너무 좋았다,, 방학 때는 정보처리기사 필기시험과 토익 시험을 치를 예정이며, 나머지 시간에는 결제해둔 스프링 인강과 1일 1코테문제를 풀 계획이다. 요약 총 공부시간 평균 공부시간 1월 24:42:20 00:47:49 2월 30:21:52 01:05:04 3월 100:13:22 03:13:58 4월 124:48:10 04:09:36 5월 144:57:41 04:..
· Algorithm
2021 카카오 신입 공채 https://programmers.co.kr/learn/courses/30/lessons/72410 🐥 이건 얻어가자 2단계 → 특정 특수문자들을 제거하는 방법 정규식 쓰는 굇수도 있던데 다른 해설 부분을 참고 ㄷㄷ 코드 def solution(new_id): answer = '' # 1단계 answer = new_id.lower() # 2단계 delete = "~!@#$%^&*()=+[{]}:?,/" for i in range(len(delete)): answer = answer.replace(delete[i], "") # 3단계 while answer.replace("..", "") != answer: answer = answer.replace("..", ".") # 4단..
squareyun
'분류 전체보기' 카테고리의 글 목록 (2 Page)