📌문제예제 4-3 왕실의 나이트8 x 8 체스판에 나이트가 서 있다. 나이트는 이동을 할 때 L자 형태로만 이동할 수 있으며 체스판 밖으로는 나갈 수 없다.1. 수평으로 두 칸 이동한 뒤에 수직으로 한 칸 이동하기2. 수직으로 두 칸 이동한 뒤에 수평으로 한 칸 이동하기8 x 8 좌표 평면상에서 나이트의 위치가 주어졌을 때 나이트가 이동할 수 있는 경우의 수를 출력하는 프로그램을 작성하시오.이때 좌표의 행 위치를 표현할 때는 1~8로 표현하고, 열 위치를 표현할 때는 a~h로 표현한다. 📌풀이나이트의 이동 경로를 steps 변수에 넣는다면steps=[(-2, -1), (-1, -2), (1, -2), (2, -1), (2, 1), (1, 2), (-1, 2), (-2, 1)] 나이트의 현재 위치가 주..
📌문제예제 4-2 시각 문제정수 N이 입력되면 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중 3이 하나라도 포함되는 모든 경우의 수를 구하는 프로그램을 작성하시오. 📌풀이3중 반복문(시, 분, 초)을 사용하여 시각을 1씩 증가시키면서 3이 하나라도 포함되어 있는지 확인 00시 00분 00초부터 1초씩 늘리며 시, 분, 초를 문자열 자료형으로 변환하여 합침합친 문자열에 '3'이 포함되어 있는지 검사 📌코드h = int(input())count = 0for i in range(h + 1): # 0시 ~ h시 for j in range(60): # 0분 ~ 59분 for k in range(60): # 0초 ~ 59초 # 매 시각 안에 '3'이..
📌구현완전 탐색: 모든 경우의 수를 주저 없이 다 계산하는 해결 방법시뮬레이션: 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행해야 하는 유형 📌문제예제 4-1 상하좌우여행가 A는 N x N 크기의 정사각형 공간 위에 서 있다. 이 공간은 1 x 1 크기의 정사각형으로 나누어져 있다. 가장 왼쪽 위의 좌표는 (1, 1)이며, 가장 오른쪽 아래 좌표는 (N, N)에 해당한다. 여행가는 상(U), 하(D), 좌(L), 우(R) 방향으로 이동할 수 있으며, 시작 좌표는 항상 (1, 1)이다. L, R, U, D로 이루어진 문자들이 적혀진 계획서를 보고 여행가 A가 최종적으로 도착할 지점의 좌표를 출력하는 프로그램을 작성하시오.(단, N x N 크기의 정사각형 공간을 벗어나는 움직임은 무시된다.) ..
📌문제예제 3-3 숫자 카드 게임여러 개의 숫자 카드 중에서 가장 높은 숫자가 쓰인 카드 한 장을 뽑는 게임1. 숫자 카드가 N x M 형태로 놓여 있다. N은 행의 개수, M은 열의 개수를 의미2. 먼저 뽑고자 하는 카드의 행을 선택한다.3. 선택된 행의 카드들 중 가장 숫자가 낮은 카드를 뽑아야 한다. 📌풀이각 행마다 가장 작은 수를 찾은 뒤 그 중에서 가장 큰 수를 선택하는 방법 min 함수를 사용해서 각 행마다 가장 작은 숫자를 찾아냄이전 행에서 가장 작은 수와 현재 행에서 가장 작은 수를 비교해서 둘 중에 큰 값을 선택 📌코드n, m = map(int, input().split())result = 0# 한 줄씩 입력받아 확인for i in range(n): data = list(map..
📌문제예제 3-2 큰 수의 법칙다양한 수로 이루어진 배열이 있을 때 주어진 수들을 M번 더하여 가장 큰 수를 만들어라. 단, 배열의 특정한 인덱스에 해당하는 수가 연속해서 K번을 초과하여 더해질 수 없는 것이 이 법칙의 특징이다. 배열의 크기 N, 숫자가 더해지는 횟수 M, 연속해서 더할 수 있는 최대 횟수 K 📌풀이 1(단순한 방법)가장 큰 수와 두 번째 큰 수만 저장가장 큰 수를 K번(연속으로 더할 수 있는 최대 횟수) + 두 번째 큰 수 1번 + ... 반복 📌코드 1# N, M, K를 공백으로 구분하여 입력받기n, m, k = map(int, input().split())# N개의 수를 공백으로 구분하여 입력받기data = list(map(int, input().split()))data.so..
📌그리디 알고리즘그리디 알고리즘 = 탐욕법현재 상황에서 지금 당장 좋은 것만 고르는 방법 기준에 따라 좋은 것을 선택하는 알고리즘이므로 '가장 큰 순서대로', '가장 작은 순서대로' 같은 기준을 문제에서 제시해준다. 정렬 알고리즘과 짝을 이뤄 자주 출제된다. 📌문제예제 3-1 거스름돈당신은 음식점의 계산을 도와주는 점원이다. 카운터에는 거스름돈으로 사용할 500원, 100원, 50원, 10원짜리 동전이 무한히 존재한다고 가정한다. 손님에게 거슬러 줘야 할 돈이 N원일 때 거슬러 줘야 할 동전의 최소 개수를 구하라. 단, 거슬러 줘야 할 돈 N은 항상 10의 배수이다. 📌풀이'가장 큰 화폐 단위부터' 돈을 거슬러 준다.500원짜리 N개 → 100원짜리 N개 → 50원짜리 N개 → 10원짜리 N개 📌..