본문 바로가기

알고리즘/백준

(23)
백준 14503 - 로봇 청소기 (Python) https://www.acmicpc.net/problem/14503 문제  풀이# 방의 크기n,m = map(int,input().split())# 로봇 청소기가 있는 방의 좌표(r,c)와 로봇청소기가 바라보는 방향(d)r,c,d = map(int,input().split())# d = 0 (북), 1(동), 2(남), 3(서)room = []for i in range(n): room_num = list(map(int,input().split())) room.append(room_num)# 4방향을 체크한다. (청소할 구역이 있는지 없는지)def check4can(r,c,room): cnt = 0 # 먼저 r,c가 최상단 (0,0), 최하단 (n-1,m-1)에 있을 때를 배제 ..
백준 11478 - 서로 다른 부분 문자열의 개수 문제https://www.acmicpc.net/problem/11478     풀이# 백준 / 실버3 / 서로 다른 부분 문자열의 개수string = input()list = []for i in range(len(string)): for j in range(len(string)): if ((j+i)+1) > len(string): break list.append(string[j:(j+i)+1]) print(len(set(list)))
백준 2003 - 수들의 합 2 문제https://www.acmicpc.net/problem/2003   풀이# 백준 / 실버4 / 수들의 합2n,m = map(int,input().split())nums = list(map(int,input().split()))answer = 0for i in range(len(nums)): sum = 0 for j in range(i,len(nums)): sum += nums[j] if sum == m: answer += 1 break elif sum > m: break print(answer)
백준 1748 - 수 이어 쓰기 1 문제https://www.acmicpc.net/problem/1748  풀이# 백준 / 실버4 / 수 이어 쓰기 1n = int(input())if n // 10 == 0: print(n)elif n // 100 == 0: print(2*(n-9) + 9)elif n // 1000 == 0: print(3*(n-99) + 189)elif n // 10000 == 0: print(4*(n-999) + 2889)elif n // 100000 == 0: print(5*(n-9999) + 38889)elif n // 1000000 == 0: print(6*(n-99999) + 488889)elif n // 10000000 == 0: print(7*(n-999999) + 58..
백준 1003 - 피보나치 함수 문제https://www.acmicpc.net/problem/1003    풀이# 백준 / 실버3 / 피보나치 함수import sysdp = [0] * 41dp[0] = 1dp[1] = 1for i in range(2,41): dp[i] = dp[i-1] + dp[i-2]for _ in range(int(sys.stdin.readline())): n = int(sys.stdin.readline()) if n == 0 : print(dp[0],0) elif n == 1: print(0, dp[1]) else: print(dp[n-2], dp[n-1]) 그냥 피보나치를 구현하면 풀리지 않음 dp를 이용하는데 문제에서는 0의 출력 횟수, ..
백준 2579 - 계단 오르기 문제https://www.acmicpc.net/problem/2579    풀이# 백준 / 실버3 / 계단 오르기n = int(input())stairs = [0] * 301for i in range(1,n+1): stairs[i] = int(input()) dp = [0] * 301dp[1] = stairs[1]dp[2] = stairs[1] + stairs[2]dp[3] = max(stairs[1] + stairs[3], stairs[2] + stairs[3])for i in range(4, n+1): dp[i] = max(dp[i-3] + stairs[i-1] + stairs[i], dp[i-2] + stairs[i])print(dp[n]) dp로 풀 수 있는 문제이다. 점화식을 세..
백준 1120 - 문자 문제https://www.acmicpc.net/problem/1120   풀이# 백준 / 실버4 / 문자열import sysX,Y = map(str, sys.stdin.readline().split())def diff(x,y): cnt = 0 min_val = 100000 if len(X) == len(Y): for i in range(len(x)): if x[i] != y[i]: cnt += 1 if cnt len(y): break for j in range(len(x)): z = y[i:i+len(x)] ..
백준 28278 - 스택 2 문제https://www.acmicpc.net/problem/28278  풀이# 백준 / 실버4 / 스택 2import sysstack = []for _ in range(int(sys.stdin.readline())): ope = list(map(int,sys.stdin.readline().split())) if ope[0] == 1: stack.append(ope[1]) elif ope[0] == 2: if stack: print(stack.pop()) else: print(-1) elif ope[0] == 3: print(len(stack)) elif ope[0] == 4: ..