목록Algorithm/백준 (4)
minzzl

최근 그리디 알고리즘을 보고 있습니다 .. 아마 다른 분들께는 기본 중에 기본일텐데 .. 저한테는 아직 많이 낯선것 같습니다 ... 그래도 홧팅 ~! 문제 풀이 처음에 해당 문제를 접근한 방법은 다음과 같았습니다. 1. 입력 받은 수를 리스트로 저장하여 각 자리수를 분리한다. 2. 각 배열의 인덱스를 int 형으로 변경한다. 3. 그 배열안의 수들을, 순열을 사용하여 순서가 있게 조합한다. 4. 조합한 것들 중 30의 배수가 되는 가장 큰 숫자를 출력한다 코드로 나타내면 .. import sys, os, io, atexit from itertools import permutations input = lambda: sys.stdin.readline().rstrip('\r\n') stdout = io.Byt..

문제 https://www.acmicpc.net/problem/1018 풀이 이는 Brute force로 단순 구현 문제이다. 문제를 보면 체스판을 색칠하는 경우는 단 두가지라는 것을 알수 있다, 즉 처음 2차원 배열 arr[8][8]에서 [0][0]이 흰색인 경우와 검은색인 경우이다. 따라서 입력에 따라 한칸씩 이동하며 맨처음이 흰색으로 시작해 체스판을 이룬 배열과 검은색으로 시작해 체스판을 이룬 배열을 각각 비교하며 최소가 되는 경우를 확인하였다. 이를 그림으로 나타내면 다음과 같다. 입력받은 2차원 배열의 각 셀마다를 행방향으로 a-8+1 까지, 열 방향으로 b-8+1 까지 옮겨가며 비교한다. 이를 코드로 나타내면 다음과 같다. a , b = input().split() a = int(a) b = ..

문제 https://www.acmicpc.net/problem/1085 풀이 가장 처음 문제를 읽었을 때는 단순히 점과 점 사이의 거리를 구하는 문제일줄로만 알았습니다. 그러나 직사각형의 경계선까지의 최단거리였기 때문에 이와는 완전히 다른 문제입니다. 그림으로 나타내면 다음과 같습니다. 즉 4개의 수의 크기를 비교해야합니다. 이를 위해 각 수를 배열에 넣어 정렬 한 다음 가장 첫번째 인덱스의 값을 출력하도록 하였습니다. 코드 x, y, w, h = input().split() x = int(x) y = int(y) w = int(w) h = int(h) a = w - x b = h - y arr = [] arr.append(a) arr.append(b) arr.append(x) arr.append(y) ..

문제 https://www.acmicpc.net/problem/10250 10250번: ACM 호텔 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수 www.acmicpc.net 풀이 우선 조건을 보면 거리가 같을 때에는 아래층 방을 선호한다는 것이 적혀있다. 이는 거리가 짧다면 윗층을 선택할 수도 있다는 것인데, 즉 N번째 손님의 방 호수를 결정하기 위해서는 아래층에서 윗층으로 쌓아가듯이 순서대로 진행하면 된다는 것이다. 그림으로 나타낸다면 다음과 같다. 그런데 다음과 같이 진행하다보면 규칙이 눈에 보인다. H(입력된 층수)는 N의 크기에 따라 층수는 ..