2019 카카오 개발자 겨울 인턴십 회고

영슈·2023년 9월 17일
0

코딩테스트

목록 보기
2/4

코딩 테스트 링크

https://school.programmers.co.kr/learn/challenges?order=recent&partIds=17931

문제

1. 크레인 인형뽑기 게임

https://school.programmers.co.kr/learn/courses/30/lessons/64061

2. 징검다리 건너기

https://school.programmers.co.kr/learn/courses/30/lessons/64062

3. 호텔방 배정

https://school.programmers.co.kr/learn/courses/30/lessons/64063

4. 불량 사용자

https://school.programmers.co.kr/learn/courses/30/lessons/64064

5. 튜플

https://school.programmers.co.kr/learn/courses/30/lessons/64065

문제 채점 결과

3 / 5 ( 1 , 4 , 5) + 2 번 효율성 FAIL

1번

문제 해석

  • 2차원 배열 내 인형 존재
  • 크레인이 이동하는 경로 배열 존재
  • 동일한 인형이 바구니에 들어올 시 인형이 터짐
  • 경로 후 터진 인형 개수 리턴

문제 해결

해당 요소가 비어있지 않으면 바구니로 이동 -> 바구니에 동일한 인형 두개시 Pop
=> 단순 for 구문 과 stack 을 통해서 구현 가능

2번

문제 해석

  • 징검다리는 숫자 배열
  • k 는 건널 수 있는 최대 숫자
  • 최대 몇 명이 건널 수 있는지 리턴

문제해결 - 정확성

단순 , 처음 부터 끝까지 이동하며 , k 만큼 공백이 있을때까지 반복
=> 매우 쉬운 문제

문제해결 - 효율성

처음부터 매우 시간이 오래 걸리기에 , 무한정 while 문은로는 불가능 함을 인지
1. 가장 작은 값을 제거 하는식으로 하여 , 최소화 하려 했으나 여전히 시간 초과
2. K 를 단위로 쪼개서 최대값 들 중 가장 작은 값을 리턴 한 후 , 처리 하려 했으나
코드가 다 돌아는 가나 , 실패하는 케이스 발견
=> 시간 내 포기

3번

  • 아직 실력 부족으로 고난도 문제 접근 X

4번

문제 해석

  • 사용자 id 존재하는 user_id 배열 , 불량 사용자 id 존재하는 banned_id
  • 불량 사용자 id 는 정보 보호 위해 하나 이상의 * 로 구성
  • 가능한 제재 아이디 목록의 개수를 리턴
  • 중복된 제재 목록은 하나로 간주

문제해결

  1. 각 불량 id 패턴에 일치하는 요소 matched_list 에 추가
  2. matched_list 를 재귀함수로 순열과 비슷하게 하나씩 추가하며 , 제거하여 사용
  3. 마지막에 도달시 , 정렬한 후 기존에 결과값들을 저장한 배열에 목록이 없으면 추가 목록들의 수를 리턴

5번

문제 해석

  • 하나의 문자열로 들어오기에 우선 각각 요소들로 변경
  • 집합이 주어질 떄 , 온 순서대로 유지를 해서 출력
    ( {2} , {2,1} , {2,1,3} , {2,1,3,4} => [2,1,3,4])

결론

  • 파이선을 사용하기로 마음 먹은 이상 , 파이선이 제공하는 stl 이나 파이선이 제공하는 편리한 장점인 음수 인덱스를 잘 활용해야 시간 단축 및 코드 생각하는 머리를 단축할 수 있을거 같다.
  • 5번 문제처럼 배열로 주지 않고 통째로 문자열로 주는 문제는 처음 봤는데 이러한 문제를 대비해 정규식이나 split 하는 방법에 대해서도 알아야 겠다고 느꼈다.
Writed By Obisidan

0개의 댓글