[BaekJoon] 1463 1로 만들기
·
💯 CodingTest/BaekJoon
▶ 문제 : 더보기 https://www.acmicpc.net/problem/1463 ▶ 코드 : num = int(input()) data = {1:0} i = 2 while True: if i == num+1: break data[i] = data[i-1] + 1 if i % 3 == 0: data[i] = min(data[i], data[i//3] + 1) if i % 2 == 0: data[i] = min(data[i], data[i//2] + 1) i += 1 print(data[num]) ▶ 문제 풀이 : 1. DP 방식을 사용해서 풀이하는 문제이다. 2. 초기 값 1을 제외한 이후 숫자(2) 부터 반복을 진행한다. 3. 해당 숫자에서 1을 뺀 경우(이 경우는 이전 결과값에 1을 더함) 3으로..
[BaekJoon] 1107 리모컨
·
💯 CodingTest/BaekJoon
▶ 문제 : 더보기 https://www.acmicpc.net/problem/1107 ▶ 코드 : N = int(input()) M = int(input()) if M > 0 : errorBtn = list(map(int, input().split())) else: errorBtn =[] answer = abs(100 - N) for num in range(1000001): # 최대 N은 500,000 까지 입력이 가능하며 같은 자리로 생각했을때 1,000,000 까지 입력이 가능하므로 범위를 이와 같이 설정 # 1,000,000을 넘어가는 숫자부터는 0 ~ 500,000사이의 숫자로 커버 가능 count = 0 for c in str(num): if int(c) in errorBtn: break els..
[BaekJoon] 1012 유기농 배추
·
💯 CodingTest/BaekJoon
▶ 문제 : 더보기 https://www.acmicpc.net/problem/1012 import sys t = int(input()) sys.setrecursionlimit(10**6) def dfs(a, b): if a = m or b = n: return if graph[a][b] == 0: return graph[a][b] = 0 dfs(a - 1, b) dfs(a, b - 1) dfs(a + 1, b) dfs(a, b + 1) for _ in range(t): m, n, k = map(int, input().split()) graph = [[0 for _ in range(n)]for _ in range(m)] for _ in range(k): a, b = ma..
[BaekJoon] 1003 피보나치 함수
·
💯 CodingTest/BaekJoon
▶ 문제 더보기 https://www.acmicpc.net/problem/1003 import sys n = int(sys.stdin.readline().rstrip()) data = {i : 0 for i in range(41)} # 숫자의 최대값이 40 result = [[0, 0] for i in range(41)] result[0][0] = 1 result[1][1] = 1 def fibo(n): if n == 0: return 0 elif n == 1: return 1 elif data[n] > 0: return data[n] else: data[n] = fibo(n-1) + fibo(n-2) result[n][0], result[n][1] = result[n-1][0] + result[n-2]..
[BaekJoon] 18111 마인크래프트
·
💯 CodingTest/BaekJoon
import sys n, m, b = map(int,sys.stdin.readline().rstrip().split()) groundHeight = [list(map(int,sys.stdin.readline().rstrip().split())) for i in range(n)] #numOfH ={i:0 for i in range(257)} linearGround = [] minH = 256 maxH = 0 for raw in groundHeight : if min(raw) maxH: maxH = max(raw) for h in raw: linearGround.append(h) linearGround.sort(reverse=True) ..
[Programmers] 숫자 문자열과 영단어
·
💯 CodingTest/Programmers
문제 사이트 더보기 https://programmers.co.kr/learn/courses/30/lessons/81301 ▶ 코드 def solution(s): words = {'zero': '0', 'one':'1', 'two':'2', 'three':'3','four':'4', 'five':'5', 'six':'6', 'seven':'7','eight':'8','nine':'9'} temp = '' answer = '' for c in s: if c in words.values() : answer += c else: temp += c if temp in words.keys() : answer += words[temp] temp = '' return int(answer) ▶ 문제 풀이 1. 초기 `wo..
[BaekJoon] 15829 Hashing
·
💯 CodingTest/BaekJoon
n = int(input()) word = input() result = 0 alpha = { 'a':1, 'b':2, 'c':3, 'd':4, 'e':5, 'f':6, 'g':7, 'h':8, 'i':9, 'j':10, 'k':11, 'l':12, 'm':13, 'n':14, 'o':15, 'p':16, 'q':17, 'r':18, 's':19, 't':20, 'u':21, 'v':22, 'w':23, 'x':24, 'y':25, 'z':26, } for i in range(len(word)): result += alpha[word[i]] * (31**i) print(result % 1234567891) 문제풀이 1. 각 알파벳 값을 지정했다. => 아스키코드를 사용해도 되지만 한번 이렇게 해보고 싶었..