코딩 테스트 문제/프로그래머스

완주하지 못한 선수

J520 2018. 9. 14. 20:58

문제




 프로그램은 participant와 completion라는 배열로, 각각 참가자와 완주자들의 이름을 받아 참가자 명단에는 있지만, 완주자 명단에는 없는 이름을 리턴 하는 논리로 작동 된다. 

 우선 participant와 completion을 메인에서 받아서, 위 문제의 제한 사항에 따른 예외 처리를 한다. 그 후 참가자 명단과 완주자 명단을 정렬한다. 그래서 for문을 통해 참가자 명단과 완주자 명단을 비교하는데, 완주자 명단이 참가자 명단보다 길이가 1개 짧기 때문에, if문에서 (완주하지 못한 선수 때문에) 걸릴 것이다. 그러면 차이가 나는 참가자의 i번째 사람 이름을 answer에 채워준다.

 그러나 for문이 완주자 명단의 길이 만큼 돌기 때문에, for문에서 if문에 걸리지 않는 경우는, 참가자 명단의 맨 마지막 선수가 완주하지 못한 선수일 때이다. 때문에 for문을 그냥 빠져나가 answer를 채우지 못했을 경우, 맨 마지막 선수를 answer에 채운다.




실행 결과 1 :

 위 메인에 대한 실행 결과 이다.


실행 결과 2 :

 아래의 입력에 대한 실행 결과이다.

participant = [leo, kiki, eden]

completion = [eden, kiki]   


실행 결과 3 :

 아래의 입력에 대한 실행 결과이다.

participant = [marina, josipa, nikola, vinko, filipa]

completion = [josipa, filipa, marina, nikola]



 참가자와 완주자 명단이 1개 빼고 같다는 것과, 동명이인도 처리해야 한다는 것, 참가자 명단과 완주자 명단의 배열 원소 모양(이름)은 같아도 순서는 다르다는 부분을 확인하고, 정렬하면 어떻게 되지 않을까 하는 생각이 들었다. 그래서 그 방향으로 생각해서 어떻게 든 했더니, 어떻게 든 되었다.

 다만, 예외 처리도 그렇고 어딘가 어수선한 느낌이 들어서 더 깔끔하게 코딩을 하지는 못하나 하는 아쉬움이 든다. 다른 사람들은 어떻게 했는지 찾아봐야겠다. 




출처 : https://programmers.co.kr/learn/courses/30/lessons/42576




'코딩 테스트 문제 > 프로그래머스' 카테고리의 다른 글

서울에서 김서방 찾기  (0) 2018.09.15
이상한 문자 만들기  (0) 2018.09.15
정수 제곱근 판별  (0) 2018.09.14
시저 암호  (0) 2018.09.13
문자열 내 마음대로 정렬하기  (0) 2018.09.12