일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- IntelliJ
- 자료형
- Python
- SaaS
- 온프레미스
- 프로젝트 생성
- valueof
- java
- 11004
- 리스트
- IaaS
- 2진수
- 최대공배수
- PaaS
- 짝수
- 유클리드 호제법
- algorithm
- 11652
- INT
- parseInt
- aws
- 알고리즘
- 웹 서버
- 프로그래머스
- 백준
- 문자열 숫자 변환
- level1
- 데이터타입
- 최대공약수
- 홀수
- Today
- Total
목록전체 글 (115)
Ga0Lee
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dNwjk6/btrqVv0SoPu/G5DmvjueaXmgdzbonD57yK/img.png)
알파벳 하자마자 아스키 코드가 생각났다. 파이썬에선 아스키코드 값을 반환하는 내장함수 ord()가 존재한다. 틀린 코드 import sys alphabet =[0] * 26 str = sys.stdin.readline() for i in str: alphabet[ord(i) - 97] += 1 print(*alphabet) 입출력 문자열을 입력받을 때 sys.stdin.realine().rstrip()으로 바꿔주니 문제가 해결됐다. 코드 import sys alphabet =[0] * 26 str = sys.stdin.readline().rstrip() for i in str: alphabet[ord(i) - 97] += 1 print(*alphabet) 입출력 아 그리고 처음엔 리스트를 공백으로 구분하..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/lfiiN/btrqXxc2Q3T/yD0haRUEoLrojq668obVQ1/img.png)
큐와 비슷하지만 덱은 양쪽에서 push, pop이 가능하다. 코드 import sys n = int(input()) deque = [] for i in range(n): command = sys.stdin.readline().split() if command[0] == 'push_front' : deque.insert(0,command[1]) elif command[0] == 'push_back' : deque.append(command[1]) elif command[0] == "pop_front" : if len(deque) == 0 : print(-1) else : print(deque.pop(0)) elif command[0] == "pop_back" : if len(deque) == 0 : pri..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/DuGgM/btrqHFc7E2v/k628WvrYlC5Z2roZMjojWk/img.png)
queue 는 선입선출이라는 것을 기억하고 풀었다. 코드 import sys n = int(sys.stdin.readline()) queue = [] for i in range(n): command = sys.stdin.readline().split() if command[0] == 'push' : queue.insert(0,command[1]) elif command[0] == 'pop' : if len(queue) == 0: print(-1) else : print(queue.pop()) elif command[0] == 'size' : print(len(queue)) elif command[0] == 'empty' : if len(queue) == 0 : print(1) else : print(0)..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/brN0Rb/btrqBHPF695/102GcMXDDHG7T2jI1cHYm0/img.png)
Stack을 pop 했을 때 top의 값이 감소하는 것을 이용하여 풀었습니다. 코드 import sys n = int(sys.stdin.readline()) for i in range(n) : stack = sys.stdin.readline() top = 0 for j in stack: if j == '(' : top += 1 elif j == ')' : top -= 1 if top 0 : print('NO') elif top == 0: print('YES') 입출력
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bYPmog/btrqFkzCV24/YtfbIo3bR7UfpffDGkan3K/img.png)
코드 import sys n = int(sys.stdin.readline()) stack = [] for i in range(n): command = sys.stdin.readline().split() if command[0] == 'push': stack.append(command[1]) elif command[0] == 'pop': if len(stack) == 0: print(-1) else: print(stack.pop()) elif command[0] == 'size': print(len(stack)) elif command[0] == 'empty': if(len(stack)==0): print(1) else : print(0) elif command[0] == 'top': if len(stac..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/NMZ4N/btrqItowryd/Tw10PHayGXSEtSTeT8JmeK/img.png)
코드 import sys n, k = map(int, input().split()) arr = list(map(int,input().split())) arr.sort() print(arr[k-1]) 입출력
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/zC0vr/btrqBGC8G6d/joQ3kB73B9qITE1JuCCEu1/img.png)
처음에는 길이가 n인 배열을 선언해서 카드 숫자에 해당하는 인덱스에 +1을 하려 했다. 하지만 sort함수를 사용하면 카드 숫자와 상관없이 정렬이 되어 정답이 0으로만 나온다. 이 문제를 해결하기 위해서 dictionary를 사용했다. 코드 import sys n = int(sys.stdin.readline()) card = {} for i in range(n): key = int(sys.stdin.readline()) if key in card.keys(): card[key] += 1 else: card[key] = 1 card = sorted(card.items(), key = lambda x : (-x[1], x[0])) print(card[0][0]) 입출력
문제 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. 입력 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 출력 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 코드 n = int(input()) dp = [0] * 1001 dp[1] = 1 dp[2] = 3 for i in range(3, n+1): dp[i] = dp[i-1] + 2 * dp[i-2] print(dp[n]%10007)
문제 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. 입력 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 출력 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 코드 n = int(input()) dp = [0]*1001 dp[1] = 1 dp[2] = 2 for i in range(3, n+1): dp[i] = dp[i-1] + dp[i-2] print(dp[n]%10007)
문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 입력 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. 출력 첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. 코드 n = int(input()) dp = [0 for i in range(n+1)] for i in range(2, n+1): dp[i] = dp[i-1] + 1 if i % 3 == 0: dp[i] = min(dp[i], dp[i//3] + 1) if i % 2 ==..