구현 (Implementation) (1) - 코딩테스트에서 구현이란? / 예제 4.1) 상하좌우, 예제 4.2) 시각

2023. 7. 28. 16:51· Algorithm

구현이란 말 그대로 소스코드를 구현해 내는 것이다. 즉, 문제를 읽고 해석하고 그에 따른 알고리즘을 소스코드로 바꾸는 과정이라고 할 수 있는 것이다. 흔히 문제 해결 분야에서 구현 유형의 문제를 '풀이를 떠올리는 것은 쉽지만 소스코드로 옮기는 것은 어려운 유형' 이라고 일컫는다. 그러한 이유는 대부분 아래와 같다.

  1. 사소한 조건 설정이 많은 문제인 경우
  2. 프로그래밍 문법을 정확하게 숙지하지 못한 경우
  3. 라이브러리 사용 경험이 부족한 경우

이러한 경우들을 사전에 방지하기 위해서 구현 유형의 다양한 문제를 풀어봐야 할 것이다. 이 책에서는 완전 탐색, 시뮬레이션 유형을 모두 구현 유형으로 묶는다. 먼저 완전 탐색이란 모든 경우의 수를 시행해보는 방법이고, 시뮬레이션은 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행하는 방법이다.

메모리 제약 사항에 대해서 얘기해보자. 파이썬에서는 다른 언어에 비해 구현상의 복잡함은 적지만 메모리 제한은 고려해야 할 것이다. 데이터 입력량 혹은 처리량이 많은 문제에서는 반드시 메모리 제한을 고려해야 한다. 파이썬에서의 리스트의 길이에 따른 메모리 사용량은 C/C++과는 대략 동일하며 크기가 1,000만 이상인 리스트는 약 40MB를 차지한다는 것을 기억하자. 따라서 문제에 표기된 메모리 제한보다 적은 메모리를 사용해야 할 것이다.

동작 속도 관점에서는 아래와 같이 단순하게 기억하면 될 것이다.

  • 파이썬 : 대략 1초에 2000만 번 연산
  • pypy3 : 대략 1초에 2000만 번 ~ 1억 번 연산

따라서 코딩테스트에서 pypy3를 선택한다면 파이썬3와 동일한 코드를 제출한다고 하더라도 실행 시간을 현격히 줄일 수 있을 것이다. 


예제 4.1) 상하좌우

문제) N x N 크기의 정사각형 공간 ( 가장 왼쪽 위 좌표는 (1,1) / 가장 오른쪽 아래 좌표는 (N, N) ) 이 주어진다. 시작 좌표는 항상 (1, 1) 이며 상하좌우 방향으로 움직일 수 있다. 여행가는 시작 좌표에서 출발하며 여행가가 이동할 계획이 적힌 계획서에는 다음과 같이 쓰여있다. 
하나의 줄에 띄어쓰기를 기준으로 하여 L, R, U, D 중 하나의 문자가 반복적으로 적혀있다. 각 문자의 의미는 아래와 같다.
L : 왼쪽으로 한 칸 이동
R : 오른쪽으로 한 칸 이동
U : 위로 한 칸 이동
D : 아래로 한 칸 이동
이 때 여행가가 N x N 크기의 정사각형 공간을 벗어나는 움직임은 무시된다. 계획서 상의 명령에 따라서 여행가가 최종적으로 도착할 지점의 좌표를 출력하는 프로그램을 작성하시오.

입력 조건)
첫 째 줄에 공간의 크기를 나타내는 N이 주어진다. ( 1 ≤ N ≤ 100)
둘 째 줄에 여행가가 이동할 계획서 내용이 주어진다. ( 1 ≤ 이동 횟수 ≤ 100 )

출력 조건)
첫 째 줄에 여행가가 최종적으로 도착할 지점의 좌표 (X, Y)를 공백을 구분하여 출력한다.

입력 예시)
5
R R R U D D

출력 예시)
3 4

소스코드

https://github.com/Engineering-Student-An/algorithm_python/blob/master/implementation/%EC%98%88%EC%A0%9C%204-1%20%EC%83%81%ED%95%98%EC%A2%8C%EC%9A%B0.py


예제 4.2) 시각

문제) 정수 N이 입력되면 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를 구하는 프로그램을 작성하시오. 예를 들어 1을 입력했을 때 다음은 3이 하나라도 포함되어 있으므로 세어야 하는 시각이다.
00시 00분 03초
00시 13분 30초
반면에 다음은 3이 하나도 포함되어 있지 않으므로 세면 안 되는 시각이다.
00시 02분 55초
01시 27분 45초

입력 조건)
첫 째 줄에 정수 N이 입력된다. ( 0 ≤ N ≤ 23)

출력 조건)
00시 00분 00초 부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를 출력한다.

입력 예시)
5

출력 예시)
11475

소스코드

https://github.com/Engineering-Student-An/algorithm_python/blob/master/implementation/%EC%98%88%EC%A0%9C%204-2%20%EC%8B%9C%EA%B0%81.py

저작자표시 (새창열림)

'Algorithm' 카테고리의 다른 글

구현 (Implementation) (3) - 실전문제 4.3) 게임 개발  (0) 2023.07.29
구현 (Implementation) (2) - 실전문제 4.2) 왕실의 나이트  (0) 2023.07.29
그리디 (Greedy) (4) - 실전문제 3.4) 1이 될 때까지  (0) 2023.07.22
그리디 (Greedy) (3) - 실전문제 3.3) 숫자 카드 게임  (0) 2023.07.22
그리디 (Greedy) (2) - 실전문제 3.2) 큰 수의 법칙  (0) 2023.07.22
'Algorithm' 카테고리의 다른 글
  • 구현 (Implementation) (3) - 실전문제 4.3) 게임 개발
  • 구현 (Implementation) (2) - 실전문제 4.2) 왕실의 나이트
  • 그리디 (Greedy) (4) - 실전문제 3.4) 1이 될 때까지
  • 그리디 (Greedy) (3) - 실전문제 3.3) 숫자 카드 게임
공대생안씨
공대생안씨
전자공학과 학부생의 코딩 일기
공대생의 코딩 일기전자공학과 학부생의 코딩 일기
티스토리
|
로그인
공대생안씨
공대생의 코딩 일기
공대생안씨
글쓰기
|
관리
전체
오늘
어제
  • All Categories (153)
    • Spring Boot (46)
      • JPA (7)
      • Lombok (2)
    • Java (21)
    • DevOps (3)
      • CI,CD (8)
      • Monitoring (2)
    • Database (7)
      • MySQL (5)
      • MongoDB (1)
      • H2 (1)
    • Trouble Shooting (5)
    • FE (4)
    • IntelliJ (3)
    • Git (3)
    • Algorithm (41)

블로그 메뉴

  • 홈
  • 태그
  • Github

공지사항

인기 글

hELLO · Designed By 정상우.v4.2.2
공대생안씨
구현 (Implementation) (1) - 코딩테스트에서 구현이란? / 예제 4.1) 상하좌우, 예제 4.2) 시각
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.