알고리즘/이것이 코딩테스트다(6)
-
구현 : 왕실의 나이트 [ 이것이 코딩테스트다 ] [ Python ]
코드 location = input() row = str(location[0]) column = int(location[1]) alpha = ["a", "b", "c", "d", "e", "f", "g", "h"] find_alpha = int(alpha.index(row)) + 1 # row 를 숫자로 변환 night = [find_alpha, column] # 나이트의 위치를 저장 array = [ [-1, -2], # "upleft" [1, -2], # "upright" [-2, -1], # "leftup" [-1, 1], # "leftdown" [-1, 2], # "downleft" [1, 2], # "downright" [2, -1], # "rightup" [2, 1] # "rightdown" ..
2023.05.18 -
구현 : 시각 [ 이것이 코딩테스트다 ] [ Python ]
코드 n = int(input()) count = 0; for i in range(n + 1): for j in range(60): for k in range(60): if '3' in str(i) + str(j) + str(k): count += 1 print(count) 회고 그냥 막연히 반복문돌림
2023.05.18 -
구현 : 상하좌우 [ 이것이 코딩테스트다 ] [ Python ]
문제 ## 상하좌우 여행가 A는 N * X 크기의 정사각형 공간 위에 서 있다. 이 공간은 1 * 1 크기의 정사각형으로 나누어져 있다. 가장 왼쪽 위 좌표는 (1, 1) 이며, 가장 오른쪽 아래 좌표는 (N, N)에 해당한다. 여행가 A는 상, 하, 좌, 우 방향으로 이동할 수 있으며, 시작 좌표는 항상 (1, 1) 이다. 계획서에는 하나의 줄에 띄어쓰기를 기준으로 하여 L, R, U, D 중 하나의 문자가 반복적으로 적혀있다. 각 문자의 의미는 다음과 같다. - L : 왼쪽으로 한 칸 이동 - R : 오른쪽으로 한 칸 이동 - U : 위로 한 칸 이동 - D : 아래로 한 칸 이동 이때 여행가 A 가 N * N 크기의 정사각형 공간을 벗어나는 움직임은 무시한다. 예를 들어 (1, 1) 의 위치에서 L..
2023.05.08 -
그리디 : 숫자 카드 게임 [ 이것이 코딩테스트다 ] [ Python ]
문제 숫자 카드 게임은 여러 개의 숫자 카드 중에서 가장 높은 숫자가 쓰인 카드 한 장을 뽑는 게임이다. 단, 게임의 룰을 지키며 카드를 뽑아야 하고 룰은 다음과 같다. 1. 숫자가 쓰인 카드들이 N * M 형태로 놓여 있다. 이때 N 은 행의 개수를 의미하며, M은 열의 개수를 의미한다. 2. 먼저 뽑고자 하는 카드가 포함되어 있는 행을 선택한다. 3. 그 다음 선택된 행에 포함된 카드들 중 가장 숫자가 낮은 카드를 뽑아야 한다. 4. 따라서 처음에 카드를 골라낼 행을 선택할 때, 이후에 해당 행에서 가장 숫자가 낮은 카드를 뽑을 것을 고려하여 최종적으로 가장 높은 숫자의 카드를 뽑을 수 있도록 전략을 세워야 한다. N + + + [3, 1, 2] + [4, 1, 4] + M [2, 2, 2] + 여기..
2023.04.19 -
그리디 : 큰 수의 법칙 [ 이것이 코딩테스트다 ] [ Python ]
문제 다양한 수로 이루어진 배열이 있을 때 주어진 수들을 M 번 더하여 가장 큰 수를 만드는 법이다. 단, 배열의 특정한 인덱스(번호) 에 해당하는 수가 연속해서 K 번을 초과하여 더해질 수 없는 것이 이 법칙의 특징이다. 예를 들어 순서대로 2, 4, 5, 4, 6 으로 이루어진 배열이 있을 때 M 이 8이고, K 가 3이라고 가정하자. 이 경우 특정한 인덱스의 수가 연속해서 세 번까지만 더해질 수 있으므로 큰 수의 법칙에 따른 결과는 6+6+6+5+6+6+6+5 인 46 이 된다. 단 서로 다른 인덱스에 해당하는 수가 같은 경우에도 서로 다른 것으로 간주한다. 예를 들어 순서대로 3, 4, 3, 4, 3 으로 이루어진 배열이 있을 때 M 이 7 이고, K 가 2라고 가정하자. 이 경우 두 번째 원소에..
2023.04.18 -
그리디 : 거스름돈 [ 이것이 코딩테스트다 ] [ Python ]
문제 당신은 음식점의 계산을 도와주는 점원이다. 카운터에는 거스름돈으로 사용할 500원, 100원, 50원, 10원짜리 동전이 무한히 존재한다고 가정한다. 손님에게 거슬러 줘야 할 돈이 N 원일 때 거슬러 줘야 할 동전의 최소 개수를 구하라. 단, 거슬러 줘야 할 돈 N 은 항상 10의 배수이다. tip) 가장 큰 화폐 단위부터 돈을 거슬러준다. 나의 코드 n = 1260 money = [ 500, 100, 50, 10] result = 0 for i in money: result = result + (n // i) # 500원 먼저 최대로 넣음 첫 루프때 n 은 1260 i 는 500 나눈값인 2를 result 에 넣는다. n = n % i # 왼쪽 변수에 오른쪽 값을 나눈후 그 나머지를 할당한다. 첫..
2023.04.18