1 minute read

  • 오늘은 모의 코딩테스트가 진행되었으므로, 해당 문제의 후기로 대체한다.
  • 저번 코테때도 그랬지만, 문제 및 답의 직접적인 업로드는 불가능하므로 최대한 우회하여 서술하는 방식으로 진행한다.

1. 최대공약문자열

  • 최대공약수의 문자 버전을 구하는 문제.
  • 제일 짧은 문자열을 0~n까지 잘라낸 문자열로 비교했다.

  • 이때, 해당 문자열 조각의 길이가 첫번째 문자열의 길이 및 두번째 문자열의 길이의 공약수가 아니라면 반복해도 중간에 남는 부분이 발생하므로, 해당 부분을 제외하며 시간을 단축시켰다.

결과

  • 66.7 / 100 (효율성 체크 2문항 실패)

2. 동명이인의 수

  • 이름이 같고 전화번호가 다른 케이스의 갯수를 세는 문제였다.

  • 세가지 방식으로 입력된 전화번호를 한가지 형식으로 고정하기 위해 re.sub를 활용하여 문자열을 처리해주었다.

  • 딕셔너리에 이름을 인덱스로 전화번호를 넣고, 이미 값이 있다면 append해주는 형식으로 동명이인의 전화번호를 수집했다.

  • 딕셔너리의 이름 인덱스에 둘 이상의 값이 들어있다면 동명이인이 있다는 것이므로, 세준다.

결과

  • 100 / 100 (정답)

3. 제로섬 게임

  • 최대 1~5개까지 숫자의 조합중, 더해서 0이 나오는 것이 있는지 구하는 문제.

  • 처음엔 itertools.combination을 활용했으나, 날로먹기에는 입력값의 범위가 커서 그런지 전원 시간초과 달성.

  • 결국 정말 더럽게 맘에 안들지만 6중 반복문 + flag와 앞선 번호를 뽑지 못하도록 제어함으로서 효율성 체크까지 충족.

  • 내가 푼 모든 문제를 합쳐서 이것보다 지저분하게 푼 문제도 없는것같다.

결과

  • 100 / 100 (정답)

4. 특징이 같은 부분 리스트

  • 최대값의 인덱스 - 최솟값의 인덱스 차가 가장 작은것을 리턴하면 끝나는 문제였다.

  • 모든 리스트의 값이 동일한 경우, 정답이 1이 되어야 하는것을 삽질끝에 깨달아 해당 부분을 보정해주어 100점으로 끝낼수 있었다.

결과

  • 100 / 100 (정답)

후기

  • 처음 봤던 모의코테에 비해 점수가 훨씬 잘 나와 만족스럽다.

  • 문제 난이도가 쉬워진건지, 내가 성장한건지 감이 안온다.