목록Baekjoon (136)
홍우진의 개발 일기장
문제 링크https://www.acmicpc.net/problem/1244 풀이 코드def onoff(idx): # 스위치 변환 if sw[idx] == 0: sw[idx] = 1 else: sw[idx] = 0sw_num = int(input())sw = list(map(int, input().split()))hak_num = int(input())for _ in range(hak_num): sex, num = map(int, input().split()) if sex == 1: # 남자라면 for i in range(1, sw_num+1): # 스위치 비교 후 바꾸기 if i % num == 0: ..
문제 링크https://www.acmicpc.net/problem/1652풀이 코드n = int(input())bang = [list(input()) for _ in range(n)]garo = 0sero = 0# 가로 검사for y in range(n): count = 0 for x in range(n): if bang[y][x] == '.': count += 1 else: #X가 나왔을 때 if count >= 2: # 2자리 연속으로 남아있다면 garo += 1 # 누울 곳 +1 count = 0 # 초기화 if count >= 2: # 줄이 끝났을 때 한번 더 ..
문제 링크https://www.acmicpc.net/problem/14606 풀이 코드sum = 0for i in range(1,int(input())): sum += iprint(sum)코드 해석쫌 생각해보니피자탑의 즐거움 최댓값을 구한다고 하면피자탑을 하나씩 옮기면서 다 더하면 될 것 같았다.예를 들어보자면5의 최댓값 = 4*1 + 3*1 + 2*1 + 1*1 = 10 이라는 것을 알 수 있다. 다 풀고 나서 난이도에 비해 너무 쉬워서 검색해봤더니DP로 풀라고 나온 문제였다.어쩐지 문제가 너무 쉽더라... DP로 푼다면 이렇게 풀 수 있다.n = int(input())dp = [0]*(11)dp[1] = 0dp[2] = 1for i in range(3, n+1): m = i//2 dp..
문제 링크https://www.acmicpc.net/problem/14501풀이 코드n = int(input())T, P = [0 for i in range(n+1)], [0 for i in range(n+1)]for i in range(n): a,b = map(int, input().split()) T[i] = a P[i] = b dp = [0 for i in range(n+1)]for i in range(len(T)-2, -1, -1): if T[i]+i 코드 해석DP로 풀었다.역순으로 진행하며dp에는 i번째날까지 일했을 때 최댓값을 보관한다.뒤에서부터 날짜를 초과하지 않는지 T값과 비교하여 확인하고만약 날짜가 초과하지 않았다면지금까지 일했을때의 최댓값과 들어온 값 중 비교하여 ..
문제 링크https://www.acmicpc.net/problem/15720 풀이 코드b,c,d = map(int, input().split())burger = list(map(int, input().split()))side = list(map(int, input().split()))drink = list(map(int, input().split()))burger.sort(reverse=True)side.sort(reverse=True)drink.sort(reverse=True)total = sum(burger) + sum(side) + sum(drink)print(total)for i in range(min(len(burger), len(side), len(drink))): sum = (burge..
문제 링크https://www.acmicpc.net/problem/9461풀이 코드for i in range(int(input())): p = [1,1,1] #배열 앞부분은 미리 선언 n = int(input()) for j in range(n-3): p.append(p[j]+p[j+1]) #배열에 p[n-2] + p[n-3]의 값을 더해줌 print(p[-1]) #마지막 값 출력코드 해석점화식을 찾으면 매우 쉽게 풀 수 있다. 점화식은 다음과 같다.p(n) = p(n−2) + p(n−3) 만약 n이 3 이하라면 p(n)은 1 for문으로 t번 반복한다.배열 앞 세 자리는 식을 위하여 미리 선언해둔다.수를 받은 후배열에 p[n-2] + p[n-3]..
문제 링크https://www.acmicpc.net/problem/10810풀이 코드n,m = map(int, input().split())ba = [0]*nfor _ in range(m) : i,j,k = map(int, input().split()) for x in range(i, j+1): ba[x-1] = k for i in range(n): print(ba[i], end=' ')코드 해석바구니를 0이 들어있는 배열로 만들어준 뒤반복하며 숫자를 각각 넣어준다.마지막엔 한 칸씩 띄어서 배열 안의 숫자들을 출력해 주면 끝. 난이도: ★☆☆☆☆
문제 링크https://www.acmicpc.net/problem/1212 풀이 코드print(bin(int(input(),8))[2:])코드 해석8진수로 숫자를 입력받는다. bin()을 이용하여 2진수로 변환한다.변환 후 2진법을 의미하는 0b가 앞에 붙기 때문에인덱스 슬라이싱을 하여 처리해준다. 난이도: ★☆☆☆☆