목록백준 (266)
홍우진의 개발 일기장
문제 링크https://www.acmicpc.net/problem/2851 풀이 코드jum = [int(input()) for x in range(10)]hap = 0for i in jum: hap += i #버섯을 먹는다. if hap >= 100: #만약 합이 100 이상이라면 if hap - 100 > 100 - (hap - i): #뭐가 더 가까운지 판단 hap -= i #먹기 전이 더 가깝다면 빼기 breakprint(hap)코드 해석점수를 리스트로 만든다.일단 버섯을 먹인 뒤합이 100 이상이 될 경우먹기 전, 먹은 후 중 뭐가 더 100에 가까운지 판단한다.먹기 전이 더 가깝다면 뺀다. 난이도: ★☆☆☆☆
문제 링크https://www.acmicpc.net/problem/13909 풀이 코드n = int(input())print(int(n**0.5))코드 해석열려있는 창문의 수의 규칙성을 찾아야 한다.맨 처음엔 아무 생각 없이 그냥 코딩으로 들이받았는데 답은 맞았지만 메모리 초과가 났다. 규칙을 찾아보자.n에 따른 열린 창문의 수를 구해보자1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16... -> 1 1 1 2 2 2 2 2 3 3 3 3 3 3 4...1,2,3,4... 의 제곱부터 변화한다는 것을 알 수 있다.결국 n의 제곱근을 구하면 된다. 코드가 짧지만 생각보다 머리를 싸맬게 많았다.난이도: ★★☆☆☆
문제 링크https://www.acmicpc.net/problem/1977 풀이 코드jegop = []m = int(input())n = int(input())i = 1while(i 코드 해석브루트포스 알고리즘을 사용한다.값을 1부터 계속 제곱하며 m보다 크고 n보다 작을 경우 jegop 리스트에 추가한다.만약 jegop 리스트에 값이 있다면 총합과 최소값을 출력한다.1부터 구했기때문에 최솟값은 제일 처음에 온다.만약 리스트에 값이 없다면 완전제곱수가 없는것이기 때문에 -1을 출력한다. 난이도: ★☆☆☆☆
문제 링크https://www.acmicpc.net/problem/19532 풀이 코드a, b, c, d, e, f = map(int,input().split())for x in range(-999, 1000): for y in range(-999, 1000): if a*x + b*y == c and d*x + e*y == f: print(x,y)코드 해석단순 브루트포스 알고리즘을 사용하여 해결하였다.이중 for문으로 x와 y에 임의의 값을 삽입하고 a*x + b*y == c와 d*x + e*y == f를 동시에 만족하는 값을 찾을 때까지 for문을 돌렸다.만족한다면? 출력한다. 문제를 처음 봤을 땐 고민이 쫌 됐지만 브루트포스로 간단하게 해결되는 문제였어서 다른 브..
문제 링크https://www.acmicpc.net/problem/10817 풀이 코드print(sorted(input().split(), key = int)[1])코드 해석숏코딩을 해봤다.수를 받은 뒤 띄어쓰기를 기준으로 나누고,sorted 라는 내장 함수를 사용하여 정렬하였다.정렬 기준은 int가 된다.난이도: ★☆☆☆☆
문제 링크https://www.acmicpc.net/problem/13458 풀이 코드x,y,w,h=map(int,input().split())print(min(x, y, w-x, h-y))코드 해석x, y, w-x, h-y 중 최소값이 직사각형의 경계값으로 가는 거리의 최솟값이다. 난이도: ★★☆☆☆코드는 어렵지 않지만 문제해결에서 헷갈릴 수 있다.
문제 링크https://www.acmicpc.net/problem/13458 풀이 코드n = int(input())a = list(map(int, input().split()))b, c = map(int, input().split())for i in a: #응시자의 수를 하나씩 불러온다. i -= b #총감독관이 감시 가능한 응시자의 수를 제외한다. if i > 0: #만약 응시자의 수가 총감독관의 감시 가능 인원 이상이면 if i % c > 0: #만약 응시자의 수 나누기 부감독관의 감시 인원을 했을 때 1 이상이라면 n += (i // c) + 1 #응시자수 나누기 부감독관 감시수 의 몫 + 1 else: ..
문제 링크https://www.acmicpc.net/problem/5597 풀이 코드students = [x for x in range(1,31)]for _ in range(28): a = int(input()) students.remove(a) print(min(students))print(max(students))코드 해석쉬운 난이도의 문제다.31까지의 리스트를 미리 만들고들어오는 숫자를 리스트에서 제거 하면남은 숫자들이 제출 하지 않은 숫자들이기 때문에출력하면 끝이다.