본문 바로가기
반응형

programmers6

[프로그래머스] 코딩테스트 고득점 Kit > 전화번호 목록 # 문제 # 문제 접근 phone_book의 길이가 1,000,000 이기 때문에 이중루프로 돌면 시간초과가 날 것이 분명하기 때문에 다른 방법을 생각해야 한다. A 번호가 B 번호의 접두어 이려면, B번호에서 앞에서부터 A번호 만큼의 길이를 잘라낸 부분이 A와 동일해야 한다. phone_book을 순회하며 한 전화번호를 앞에서부터 잘라가며 접두어 리스트를 만들어 놓고 있는지 없는지 판별하면 될 것 같다. 그런데 생각해보니 단순히 리스트면 시간초과가 날 것 같으니, 읽는 속도가 빠른 set을 사용하도록 하자. # 문제 풀이 1. 접두어들을 저장할 set을 만든다. 2. phone_book 리스트를 순회하며 전화번호의 앞에서부터 1글자, 2글자, .. N글자 까지의 접두어를 위의 set에 저장한다. 3. .. 2019. 11. 5.
[프로그래머스] 코딩테스트 고득점 Kit > 완주하지 못한 선수 # 문제 # 문제 접근 participant에 존재하는 이름 중에 completion에 존재하지 않는 이름을 찾아서 return하면 되는 문제다. 제한사항에서 "참가자 중에는 동명이인이 있을 수 있습니다." 라는 문구가 있는 것과 입출력 예의 세번 째를 참고하면 같은 이름을 가진 참가자가 있고 답이 그 이름일 때 어떻게 처리할 것인가가 중요 포인트인 것 같다. 또한 참가자 수가 100,000명까지 가능하기 때문에 N^2으로 풀면 시간초과가 날 가능성이 있다는 것을 염두하자. # 문제 풀이 1. 동명이인이 존재할 수 있기 때문에, 특정 이름이 몇명이 존재하는 지 구분할 수 있어야 한다. 즉 "어떤 이름" : "몇 명" 이란 데이터를 저장할 수 있어야 하는데, 이 형태는 (키 : 값) 을 띄고 있기 때문에 .. 2019. 11. 5.