[코딩테스트 Python] 2회 모의고사

인기 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 개발자입니다. 수학, 알고리즘 같은 실생활과 가깝고도 먼 학문을 좋아하고, 명확하지만 개선 여지가 있는 문제들에 대해 논의하고 사고를 개선해 나가는 과정을 좋아합니다.

Leave a Reply

©2020 GoldenRabbit. All rights reserved.
상호명 : 골든래빗 주식회사
(04051) 서울특별시 마포구 양화로 186, 5층 512호, 514호 (동교동, LC타워)
TEL : 0505-398-0505 / FAX : 0505-537-0505
대표이사 : 최현우
사업자등록번호 : 475-87-01581
통신판매업신고 : 2023-서울마포-2391호
master@goldenrabbit.co.kr
개인정보처리방침
배송/반품/환불/교환 안내