본문 바로가기

코딩테스트70

[이것이 코딩테스트다] Chapter 2. 구현 - 실전문제 / 게임 개발 현민이는 게임 캐릭터가 맵 안에서 움직이는 시스템을 개발 중이다. 각각의 칸은 육지 또는 바다이다. 캐릭터는 동서남북 중 한 곳을 바라본다. 캐릭터는 상화좌우로 움직일 수 있고, 바다로 되어 있는 공간에느 갈 수 없다. 움직임을 설정하기 위해 정해 놓은 메뉴얼은 이러하다. 1. 현재 위치에서 현재 방향을 기준으로 왼쪽 방향부터 차례대로 갈 곳을 정한다. 2. 캐릭터의 바로 왼쪽 방향에 아직 가보지 않은 칸이 존재한다면, 왼쪽 방향으로 회전한 다음 왼쪽으로 한 칸을 전진한다. 왼쪽 방향에 가보지 않은 칸이 없다면, 왼쪽 방향으로 회전만 수행하고 1단계로 돌아간다. 3. 네 방향 모두 가본 칸이거나 바다로 되어 있는 칸이면, 바라보는 방향을 유지한 채로 한 칸 뒤로 가고 1단계로 돌아간다. 단, 이때 뒤쪽 .. 2024. 3. 18.
[이것이 코딩테스트다] Chapter 2 구현 실전문제 왕실의 나이트 실전문제 - 왕실의 나이트 나이트는 말을 타고 있기 때문에 이동을 할 때는 L자 형태로만 이동할 수 있으며 정원 밖으로는 나갈 수 없다. 이동하는 법 1. 수평으로 두 칸 이동한 뒤에 수직으로 한 칸 이동하기 2. 수직으로 두 칸 이동한 뒤에 수평으로 한 칸 이동하기 나이트의 위치가 주어졌을 때 , 나이트가 이동할 수 있는 경우의 수를 출력하는 프로그램 입력예시 : a1 출력예씨 : 2 나이트의 이동 경로를 steps 변수에 넣는다면 위 규칙에 따라 8가지 경우의 수를 정의할 수 있다. 각 8가지 방향에 대하여 각 위치로 이동이 가능한 지 확인한다. # 현재 나이트의 위치 입력받기 input_data = input() row = int(input_data[1]) # 열 column = int(ord(in.. 2024. 3. 18.
[프로그래머스] 완전탐색 - 카펫 나의 답 def check(brown, yellow,x,y): b = x*y-((x-2)*(y-2)) y = (x-2)*(y-2) if brown == b and yellow == y: return 1 else: return 0 def solution(brown, yellow): cnt = brown+yellow arr = [] for i in range(3,cnt+1): # 약수 구하기 if cnt%i==0: arr.append(i) for value in arr: # 약수 조합 활용 x = value y = int(cnt/value) if check(brown, yellow,x,y): # 가로, 세로 값에 따라서 brown, yellow 충족 확인 return [x,y] if x>y else [y, .. 2024. 3. 18.
[프로그래머스] 완전탐색 - 최소직사각형 나의 답 - 결국은 못풀..었..다. ㅠ def check(filter_list,value): for i in filter_list: if value[1] i[1]: return 0 return 1 def solution(sizes): karo = [] sero = [] for edges in sizes: karo.append(edges[0]) sero.append(edges[1]) karo.sort(reverse=True) sero.sort(reverse=True) i=1 max_k=karo[i] max_s=sero[i] answer = max(karo)*max(sero) #가로 중에 젤 큰 값, 세로 중에 젤 큰 값 for i, value in enumerate.. 2024. 3. 18.
[이것이 코딩테스트다] Chapter 2. 구현 코딩테스트에서 구현이란 '머리속에 있는 알고리즘을 소스코드로 바꾸는 과정'이다. 예제 4-1 상하좌우 첫째 값 : 공간의 크기를 나타내는 N 둘째 값 : 여행가 A가 이동할 계획서 내용 입력 예시 5 R R R U D D 출력 예시 3 4 답안 예시 n = int(input()) x, y = 1, 1 plans = input().split() # L, R, U, D에 따른 이동 방향 dx = [0,0,-1,1] dy = [-1,1,0,0] move_types = ['L','R','U','D'] # 이동 계획을 하나씩 확인 for plan in plans: # 이동 후 좌표 구하기 for i in range(len(move_types)): if plan == move_types[i]: nx = x + dx.. 2024. 3. 16.
[이것이 코딩테스트다] Chapter 02. 그리디 실전문제 3. 숫자 카드 게임 숫자 카드 중에서 가장 높은숫자가 쓰인 카드 한 장을 뽑는 게임. but. 게임 룰 1. 먼저 뽑고자 하는 카드가 포함되어 있는 행 선택 2. 각 행 중에 가장 작은 수만을 뽑을 수 있음 Sol 행별로, 가장 작은 숫자를 알아냄 작은 숫자들 중에 가장 큰 수를 뽑아내면 됨 소스코드 n = 3 # 행의 크기 m = 3 # 열의 크기 A = [[3,1,2],[4,1,4],[2,2,2]] # 리스트 A result = 0 # 한 줄씩 확인 for i in range(n): data = A[i] # 현재 줄에서 가장 작은 수 찾기 min_value = min(data) # 가장 작은 수 들 중에서 가장 큰 수 찾기 result = max(result, min_value) print.. 2024. 3. 8.