본문 바로가기

Computer Science

(18)
[프로그래머스/레벨1] 완주하지 못한 선수 풀이 과정 문제는 생각보다 쉬웠다. 특히 완주하지 못한 선수가 항상 1명이라는 점이 이 문제를 더 쉽게 만든 것 같다. 매개변수와 반환 값에 대한 설명에서 participant는 참여한 선수들을 담은 배열이고, completion은 완주한 선수들을 담은 배열이라는 것을 파악하고 간단하게 메모했다. 완주하지 못한 선수 return해야 하는 것도 메모했으면 좋을 것 같다. 지난 실수들을 생각하면서 이 문제에서 어떤 알고리즘 개념을 요구하는지 생각해보았다. 배열 요소 하나하나를 for문으로 탐색해야 한다는 점에서 탐색 알고리즘, 길 찾기 알고리즘이 생각나서 메모했다. 지금 검색해보니 탐색 알고리즘과 길 찾기 알고리즘은 완전히 다른 거고(^^) 탐색 알고리즘은 사실 처음 봤다. 학교에서 들은 수업에서는 배우지 ..
[프로그래머스/레벨1] 두 개 뽑아서 더하기 풀이 과정 이번 문제는 저번 문제(크레인 인형뽑기 게임)보다 설명이 간단했고, 난이도도 쉬웠다. '서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수'를 보고 for문을 두번 돌아야겠다는 생각이 들어 메모했다. 그리고 예시를 보고 중복되지 않는다는 점을 발견했다. 'for문 2개'만으로는 구체적이지 않아 예를 들어 어떤 식으로 두 개의 수를 더해야 하는지 메모에 그림을 그려놨고 주의해야 할 사항(겹치면 넣지 않기, 오름차순)을 따로 메모했다. 주의해야 할 사항은 나중에 까먹을 수 있으니 ※기호로 항상 메모해야 한다! def solution(numbers): answer = [] for i in range(len(numbers)): for j in range(len(numbers))..
[프로그래머스/레벨1] 크레인 인형뽑기 게임 풀이 과정 문제를 찬찬히 읽으면서 노란색으로 밑줄 쳐놓은 부분을 보고 스택을 생각했다. 그래서 메모에 바로 스택이라 작성했다. (왜 X 표시를 하게 되었는지는 뒤에서 말할 예정.. 부끄럽다... ^^) 그리고 매개변수로 주어진 board와 moves가 뭘 의미하는지, 내가 어떤 것을 return 해야 하는지를 캐치했다. board는 2차원 배열의 형태라는 것, moves는 크레인 작동 위치를 담은 배열이라는 것, 그리고 사라진 인형 개수를 return해야 한다고 간략하게 메모했다. 처음부터 바로 완벽한 알고리즘을 구현하는 것은 어렵다. 그래서 처음부터 일반화된 알고리즘을 짜기보다는 주어진 예시에 한정된 알고리즘을 먼저 짠 후 일반화시키는 것이 더 편하다. 입출력 예를 보고 어떻게 4가 나올 수 있는지 작..