목록algorithm/baekjoon (96)
하루일문
문제 https://www.acmicpc.net/problem/1051 1051번: 숫자 정사각형 N×M크기의 직사각형이 있다. 각 칸에는 한 자리 숫자가 적혀 있다. 이 직사각형에서 꼭짓점에 쓰여 있는 수가 모두 같은 가장 큰 정사각형을 찾는 프로그램을 작성하시오. 이때, 정사각형은 행 www.acmicpc.net 코드 import sys input = sys.stdin.readline N, M = map(int, input().split()) square= [] for i in range(N): square.append(list(input().strip())) min_line = min(N, M) size = 1 for i in range(N): for j in range(M): # 정사각형을 만들기..
문제 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 다이나믹 프로그래링 for i in range(int(input())): N, M = map(int, input().split()) # 경우의 수를 구할 list를 만든다 dp = [[0 for _ in range(M + 1)] for __ in range(N + 1)] # 서쪽 i번째 다리가 연결될 수 있는 경우의 수 ..
문제 1173번: 운동 첫째 줄에 다섯 정수 N, m, M, T, R이 주어진다. www.acmicpc.net 코드 N, m, M, T, R = map(int, input().split()) cnt = t = 0 now = m # 조건에 안들어가면 while로 못 들어가도록 설정 if m + T > M: pass else: while t < N: if now + T
문제 14938번: 서강그라운드 예은이는 요즘 가장 인기가 있는 게임 서강그라운드를 즐기고 있다. 서강그라운드는 여러 지역중 하나의 지역에 낙하산을 타고 낙하하여, 그 지역에 떨어져 있는 아이템들을 이용해 서바이벌을 www.acmicpc.net 코드 import sys input = sys.stdin.readline INF = int(10e9) city, area, road = map(int, input().split()) item = [0]+list(map(int, input().split())) ground = [[INF] * (city + 1) for _ in range(city + 1)] for i in range(road): area_1, area_2, dist = map(int, input()..
문제 1058번: 친구 지민이는 세계에서 가장 유명한 사람이 누구인지 궁금해졌다. 가장 유명한 사람을 구하는 방법은 각 사람의 2-친구를 구하면 된다. 어떤 사람 A가 또다른 사람 B의 2-친구가 되기 위해선, 두 사람 www.acmicpc.net 코드 import sys input = sys.stdin.readline n = int(input()) people = [list(input().strip()) for _ in range(n)] friend = [[0] * n for _ in range(n)] # 한다리 더 걸쳐야한다 for i in range(n): for j in range(n): for k in range(n): if k == j: continue # 나랑 친구거나 / 한다리 걸쳐 아는 ..
문제 https://www.acmicpc.net/problem/1431 1431번: 시리얼 번호 첫째 줄에 기타의 개수 N이 주어진다. N은 50보다 작거나 같다. 둘째 줄부터 N개의 줄에 시리얼 번호가 하나씩 주어진다. 시리얼 번호의 길이는 최대 50이고, 알파벳 대문자 또는 숫자로만 이루어 www.acmicpc.net 코드 def sum_num(x): result = 0 for i in x: if i.isdigit(): result += int(i) return result n = int(input()) num = [] for i in range(n): num.append(input()) num.sort(key=lambda x:(len(x), sum_num(x), x)) print(*[i for i ..
문제 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 코드 import sys input = sys.stdin.readline N = int(input()) room = [] # 회의가 금방 끝나면서 가장 빠르게 시작하는 순으로 정렬해준다 time = sorted([tuple(map(int, input().split())) for i in range(N)], key=lambda x:(x[1], x[0])) cnt = 0 end = -1 # 시작시간이 전에 끝나는 시간보다 크다면 회의를 배정해준다 for i in time: if i[0] >= end: cnt += 1 end = i[1] print(cnt) 해설 그리디 문제를 ..
문제 4153번: 직각삼각형 입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다. www.acmicpc.net 코드 while True: a = list(map(int, input().split())) # 제일 큰찾아 max_num = max(a) # 합이 0이면 while문 종료 if sum(a) == 0: break # 리스트에서 지워주고 a.remove(max_num) # 리스트 안의 값의 제곱의 합이 맥스의 제곱의 합과 같다면 if a[0] ** 2 + a[1] ** 2 == max_num ** 2: print('right') else: print('wrong')