21년 1월 20일
한 일
-
프로그래머스의 크레인 인형뽑기 게임, 이상한 문자 만들기, 구명보트, 섬 연결하기를 풀었다.
- 크레인 인형뽑기 게임:
- 주어진 규칙에 맞게 구현만 하면 되는 레벨1짜리 문제였다.
-
이상한 문자 만들기:
-
마찬가지로 주어진 구현만 하면 되는 쉬운 문제였다.
-
하지만 문제를 자의적으로 해석해 틀리고 말았다.
-
공백으로 구분된 문자들을 기준으로 짝수번째는 대문자 홀수번째는 소문자로 바꾸는 문제였다.
-
쉬운 문제였는데 틀리고 말았다.
-
나는 자의적으로 해석하여, 공백을 기준으로 단어를 split한 후 대문자,소문자를 적용하고나서 다시 공백으로 합쳤다.
-
문제에서 각 문자들이 공백 하나로만 구분된다거나 맨마지막 단어 뒤에 공백이 없다는 조건이 없었다.
-
-
문제를 제대로 읽고, 문제에서 제약조건으로 알려주지 않은 모든 경우의 수를 생각하며 풀어야 한다.
-
-
구명보트:
-
풀었던 문제인데도 효율성에서 시간초과가 나서 결국 답을 보고 풀었다.
-
무게순으로 정렬 후 순회하며 풀어나가는 문제이다.
-
순회하는 기준을 어디로 두냐의 문제였다.
-
무게가 작은 사람을 기준으로 순회한다면, 같이 보트를 태울 사람을 최대무게부터
현재 무게 더해도 한계를 안넘는 사람을 찾을 때까지 줄여나가며 찾아야 한고 못 찾으면 현재 무게만 태운다.
(모든 사람의 무게가 limit인 경우 항상 이중포문을 돌게 된다.)
-
무게를 큰 사람을 기준으로 순회한다면, 같이 보트를 태울 사람을 찾을 때, 최소무게+현재무게가 한계를 안넘으면 태우고,
한계를 넘으면 현재 무게만 보트에 태우면 된다.(무게가 큰 사람부터 순회하기 때문)
-
-
시간초과가 나는 것을 보고, 도저히 해결못하겠다고 생각했는데 기준만 다르게 생각하면 되는 문제였다 ㅠㅠ
-
-
섬 연결하기:
- 그냥 크루스칼 알고리즘으로 풀라고 던져준 문제 같았다.
- union-find 기법과 kruskal 알고리즘으로 간단하게 풀 수 있었다.
- 크레인 인형뽑기 게임:
잘못한 것
- 한달의 중간을 안쉬고 달렸다는 핑계로 쉬는 시간이 많았다.
- 책을 아예 안보고 있다. 조금이라도 전진하는 것과 멈추는 것은 다른 문제인데..
잘한 것
- 그래도 오늘 하기로 계획한 알고리즘 문제는 모두 풀었다.
느낌
- 완독하기로 한 책을 조금씩이라도 읽어야 발전하는데 아예 진행을 안하고 있다.
- 진짜 고질적인 문제인데, 계획한 시간을 넘으면 잠시 멈추고 하기로 한 일을 진행해야 한다.
- 걱정이 많이 된다. 쉴 땐 쉬고 할 땐 하는 연습이 필요하다.
할 일
- 코드스쿼드 미션하기
- 프로그래머스 문제 풀기
- TCP/IP 쉽게 더쉽게 읽기