[이것이 취업을 위한 코딩 테스트다 with Python] 구현
2. 구현(Implementation)이란?
-
행렬

-
방향 벡터

2.1 시각
문제

힌트
- 하루는 86,400초이다. :
24 * 60 * 60 = 86,400 - 시각을 1초씩 증가시키면서 3이 포함되어 있는지 확인하면 되는 ‘완전탐색'유형이다.
코드
- 파이썬
# 시간 입력받기
h = int(input())
count = 0
for i in range(h +1):
for j in range(60):
for k in range(60):
# 매 시각 안에 '3'이 포함되어 있다면 카운트 증가
if '3' in str(i) + str(j) + str(k):
count += 1
print(count)
- 자바
package Implementation;
import java.util.*;
public class Clock {
// 특정한 시각 안에 '3'이 포함되어 있는지의 여부
public static boolean check(int h, int m, int s) {
if (h % 10 == 3 || m / 10 == 3 || m % 10 == 3 || s / 10 == 3 || s % 10 == 3)
return true;
return false;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// H를 입력받기
int h = sc.nextInt();
int cnt = 0;
for (int i = 0; i <= h; i++) {
for (int j = 0; j < 60; j++) {
for (int k = 0; k < 60; k++) {
// 매 시각 안에 '3'이 포함되어 있다면 카운트 증가
if (check(i, j, k)) cnt++;
}
}
}
System.out.println(cnt);
}
}
2.2 상하좌우
문제
힌트
- 일련의 명령에 따라서 충실히 구현하면 되는 문제이다. (시뮬레이션 유형)
답안
- 파이썬
# n 입력받기
n = int(input())
x, y = 1, 1
plans = input().split()
# L, R, U, D에 따른 이동 방향
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]
moves_types = ['L', 'R', 'U', 'D']
# 이동 계획을 하나씩 확인하기
for plan in plans:
# 이동 후 좌표 구하기
for i in range(len(move_types)):
for i in range(len(move_types)):
if plan == move_types[i]:
nx = x + dx[i]
ny = y + dy[i]
# 공간을 벗어나는 경우 무시
if nx < 1 or ny < 1 or nx > n or ny >n:
continue
# 이동 수행
x, y = nx, ny
print(x,y)
-
자바
- nx, ny를 -1로 설정한 이유? L , R , U , D 이외의 문자가 들어왔을 때 대처하기 위해서???
package Implementation;
import java.util.Scanner;
public class Direction {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// N을 입력받기
int n = sc.nextInt();
sc.nextLine(); // 버퍼 비우기
String[] plans = sc.nextLine().split(" ");
int x = 1, y = 1;
// L, R, U, D에 따른 이동 방향
int[] dx = {0, 0, -1, 1};
int[] dy = {-1, 1, 0, 0};
char[] moveTypes = {'L', 'R', 'U', 'D'};
// 이동 계획을 하나씩 확인
for (int i = 0; i < plans.length; i++) {
char plan = plans[i].charAt(0);
// 이동 후 좌표 구하기
int nx = -1, ny = -1;
for (int j = 0; j < 4; j++) {
if (plan == moveTypes[j]) {
nx = x + dx[j];
ny = y + dy[j];
}
}
// 공간을 벗어나는 경우 무시
if (nx < 1 || ny < 1 || nx > n || ny > n) continue;
// 이동 수행
x = nx;
y = ny;
}
System.out.println(x + " " + y);
}
}
기타
2.3 왕실의 나이트
문제

힌트
답안
- 파이썬
- 자바