일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- Flutter
- JS
- 동적 프로그래밍
- BAEKJOON
- 쓰셨잖아
- 코드트리
- 이진탐색
- 못그리지만
- 자바스크립트
- 그래프 탐색
- 프로그래머스
- 스터디
- sort
- Java
- Algorithm
- DP
- 삼성sw역테
- DART
- 코딩테스트
- c#
- BFS
- 파이썬
- 자료구조
- programmers
- 카카오
- 문자열 파싱
- JavaScript
- 백준
- 구현
- 알고리즘
- Today
- Total
목록알고리즘 (29)
Algo 쓰자
▶ 문제 : 더보기 https://programmers.co.kr/learn/courses/30/lessons/67256 ▶ 코드 : keyPad = { '1' : (0,0), '2' : (0,1), '3' : (0,2), '4' : (1,0), '5' : (1,1), '6' : (1,2), '7' : (2,0), '8' : (2,1), '9' : (2,2), '*' : (3,0), '0' : (3,1), '#' : (3,2) } def solution(numbers, hand): answer='' left = '*' right = '#' for num in numbers: if num in [1, 4, 7] : answer += 'L' left = str(num) elif num in [3, 6, 9]..
▶ 문제 : 더보기 https://www.acmicpc.net/problem/1620 ▶ 코드 : n, m = map(int, input().split()) numToName = {} nameToNum = {} question = [] nums = ['0','1','2','3','4','5','6','7','8','9'] for i in range(1,n+1): data = input() numToName[i] = data nameToNum[data.lower()] = i for i in range(m): question.append(input().lower()) for q in question: if q[0] in nums: print(numToName[int(q)]) else: print(nameTo..
▶ 문제 : 더보기 https://www.acmicpc.net/problem/1541 ▶ 코드 : expr = input() tempExpr = '' tempNum = '' # + 기호를 포함하면 덧셈을 해주는 함수 def exprSum(strData): if '+' in strData: for i in range(len(strData)): if strData[i] == '+': return str(int(strData[:i]) + int(strData[i+1:])) return strData # 우선적으로 식에 포함된 + 기호를 이용한 덧셈을 진행 식에서 + 기호가 있는 부분은 모두 더해줌 for i in range(len(expr)): if i == len(expr) - 1: tempNum += ex..
▶ 문제 : 더보기 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으로..
▶ 문제 : 더보기 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..
▶ 문제 더보기 https://www.acmicpc.net/problem/1074 ▶ 코드 N, r, c = map(int, input().split()) l = 2 ** N def recursiveZ (x, y, l, startIndex): global answer, r, c if l == 2: if (x,y) == (r,c): answer = startIndex elif (x,y+1) == (r,c): answer = startIndex + 1 elif (x+1,y) == (r,c): answer = startIndex + 2 elif (x+1,y+1) == (r,c): answer = startIndex + 3 elif l > 2 : dividedL = l // 2 if r < dividedL an..
▶ 문제 더보기 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]..