이 글은 〈[되기] 코딩 테스트 합격자 되기(파이썬 편)〉에서 발췌했습니다.
골든래빗 출판사
박경록 지음
인기 IT 회사별 취향에 맞춘 코딩 테스트 모의고사를 4회 준비했습니다. 코딩 테스트를 준비 중이시라면 모의고사를 풀어보면서 최종적으로 실력을 점검해보세요.
모의고사 2회
주요 IT 기업의 출제 스타일을 모았습니다.
시험 안내
- 본 시험은 자료구조, 알고리즘, 코딩 영역의 프로그래머 역량을 테스트하기 위한 시험입니다.
- 주어진 시간은 3시간입니다.
- 문제는 총 3문제로 구성되어 있습니다.
- 실제 시험에 응하듯 풀어보기 바랍니다.
문제
제출 결과를 표시하면서 모의고사를 진행해보세요!
01 110 옮기기
- 제한 시간(푼 시간) : 30분 ( 분)
- 제출 결과
- 통과
- 시간 초과
- 런타임 에러
02 쿼드압축 후 개수 세기
- 제한 시간(푼 시간) : 50분 ( 분)
- 제출 결과
- 통과
- 시간 초과
- 런타임 에러
03 없는 숫자 더하기
- 제한 시간(푼 시간) : 20분 ( 분)
- 제출 결과
- 통과
- 시간 초과
- 런타임 에러
01 110 옮기기
0과 1로 이루어진 어떤 문자열 x에 대해서, 당신은 다음과 같은 행동을 통해 x를 최대한 사전 순으로 앞에 오도록 만들고자 합니다.
- x에 있는 “110”을 뽑아서, 임의의 위치에 다시 삽입합니다.
예를 들어 x = “11100”일 때, 여기서 중앙에 있는 “110”을 뽑으면 x = “10”이 됩니다. 뽑았던 “110”을 x의 맨 앞에 다시 삽입하면 x = “11010”이 됩니다. 변형시킬 문자열 x가 여러 개 들어있는 문자열 배열 s가 주어졌을 때, 각 문자열에 대해서 위의 행동으로 변형해서 만들 수 있는 문자열 중 사전 순으로 가장 앞에 오는 문자열을 배열에 담아 return하도록 solution( ) 함수를 완성해주세요.
제약 조건
- 1 ≤ s의 길이 ≤ 1,000,000
- 1 ≤ s의 각 원소 길이 ≤ 1,000,000
- 1 ≤ s의 모든 원소의 길이의 합 ≤ 1,000,000
입출력의 예
입출력 예 #1
다음 그림은 “1110”을 “1101”로 만드는 과정을 나타낸 것입니다.
- “1101”보다 사전 순으로 더 앞에 오는 문자열을 만들 수 없으므로, 배열에 “1101”을 담아야 합니다.
다음 그림은 “100111100”을 “100110110”으로 만드는 과정을 나타낸 것입니다.
- “100110110”보다 사전 순으로 더 앞에 오는 문자열을 만들 수 없으므로, 배열에 “100110110”을 담아야 합니다.
- 그림에 나온 방식 말고도 다른 방법으로 “100110110”을 만들 수 있습니다.
다음 그림은 “0111111010”을 “0110110111”로 만드는 과정을 나타낸 것입니다.
- “0110110111”보다 사전 순으로 더 앞에 오는 문자열을 만들 수 없으므로, 배열에 “0110110111”을 담아야 합니다.
- 그림에 나온 방식 말고도 다른 방법으로 “0110110111”을 만들 수 있습니다.
02 쿼드압축 후 개수 세기
0과 1로 이루어진 2n × 2n 크기의 2차원 정수 배열 arr이 있습니다. 당신은 이 arr을 쿼드 트리와 같은 방식으로 압축하고자 합니다. 구체적인 방식은 다음과 같습니다.
- 당신이 압축하고자 하는 특정 영역을 S라고 정의합니다.
- 만약 S 내부에 있는 모든 수가 같은 값이라면, S를 해당 수 하나로 압축시킵니다.
- 그렇지 않다면, S를 정확히 4개의 균일한 정사각형 영역(입출력 예를 참고하기 바랍니다.)으로 쪼갠 뒤, 각 정사각형 영역에 대해 같은 방식의 압축을 시도합니다.
arr이 매개변수로 주어집니다. 위와 같은 방식으로 arr을 압축했을 때, 배열에 최종적으로 남는 0의 개수와 1의 개수를 배열에 담아서 return 하도록 solution( ) 함수를 완성해주세요.
제약 조건
- arr의 행의 개수는 1 이상 1024 이하이며, 2의 거듭 제곱수 형태를 하고 있습니다. 즉, arr의 행의 개수는 1, 2, 4, 8, …, 1024 중 하나입니다.
- arr의 각 행의 길이는 arr의 행의 개수와 같습니다. 즉, arr은 정사각형 배열입니다.
- arr의 각 행에 있는 모든 값은 0 또는 1 입니다.
입출력의 예
입출력 예 #1
- 다음 그림은 주어진 arr을 압축하는 과정을 나타낸 것입니다.
- 최종 압축 결과에 0이 4개, 1이 9개 있으므로, [4, 9]를 return 해야 합니다.
03 없는 숫자 더하기
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution( ) 함수를 완성해주세요.
제약 조건
- 1 ≤ numbers의 길이 ≤ 9
- 0 ≤ numbers의 모든 원소 ≤ 9
- numbers의 모든 원소는 서로 다릅니다.
입출력의 예
입출력 예 #1
- 5, 9가 numbers에 없으므로, 5 + 9 = 14를 return 해야 합니다.
입출력 예 #2
- 1, 2, 3이 numbers에 없으므로, 1 + 2 + 3 = 6을 return 해야 합니다.
모의고사 3회로 이어집니다.
자료구조, 알고리즘, 빈출 100 문제로 대비하는 코테 풀 패키지
[되기] 코딩 테스트 합격자 되기(파이썬 편)
저자 박경록
매일 퇴근과 점심 메뉴를 고민하는 9년차 시스템 S/W 개발자입니다. 수학, 알고리즘 같은 실생활과 가깝고도 먼 학문을 좋아하고, 명확하지만 개선 여지가 있는 문제들에 대해 논의하고 사고를 개선해 나가는 과정을 좋아합니다.