https://www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net 요즘 자료구조 문제를 많이 푸는 것 같다. 이 문제는 회전하는 큐를 덱으로 구현하는 문제이다. idx라는 변수를 두어 answer에 넣어야 하는 수가 무엇인지 검사하였다. (입력의 num 배열로) 만약 아니라면, 1번 연산을 다시 되돌리고 찾고자 하는 수의 위치를 찾는다. 인덱스가 앞쪽이면 2번 연산을, 뒤쪽이면 3번 연산을 수행한다. 이때 인덱스 비교를 할 때 // 대신 / 를 써야 한다. ..
https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 리스트로 하면 무조건 시간 초과가 날 것 같았다. 따라서 딕셔너리를 사용하여 해당 카드의 수가 몇 번 나왔는지 value로 저장하였다. 즉, card라는 list에서 10이 3번 나왔으면 {10 : 3} 이렇게 저장되는 것이다. 그리고 만약에 find_number에 일치하는 키가 있다면 값을 출력해주면 되고 만약 없다면 0을 출력한다. 딕셔너리에서 in 연산은 시..
https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 처음에는 재귀로 풀었는데 런타임 에러가 떴다. 그래서 재귀를 안 쓰고 푸는 방법을 생각하다가 바로 Q에서 popleft하는 방법이 떠올랐다. 코드도 훨씬 간단해졌다. # 요세푸스 문제 import sys from collections import deque input = sys.stdin.readline N, K = map(int, input().split()) Q = deque([i for i in range(1, N+1)]) answer = [] while Q: for i in ran..
https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net # 숫자 카드 import sys input = sys.stdin.readline N = int(input()) card = set(list(map(int, input().split()))) M = int(input()) find = list(map(int, input().split())) answer = [] for idx in range(len(find)): if..
https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net 문제 입력을 고려하지 않고 리스트로 구현했다가 시간초과가 났다. 파이썬의 자료구조 중 dictionary를 사용하여 구현하였다. 딕셔너리에서 키를 검색하는 방법(key in dict)의 시간 복잡도는 O(1)이지만, 리스트(elem in list)는 O(n)이기 때문에 훨씬 효율적이다. 딕셔너리와 리스트의 주요 연산 시간 복잡도 비교는 아래의 링크에서 더 자세하게 확인할 수 있다. (감사합니다)..
https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 문제는 아주 쉽다. 파이썬에서의 deque를 사용하면 큐 구현이 쉽기 때문이다. 입력으로 들어오는 명령에 따라 조건문을 나눠 처리해주면 된다. # 큐 import sys from collections import deque input = sys.stdin.readline N = int(input()) Q = deque() for _ in range(N): cmd = input()...
- Total
- Today
- Yesterday
- heapq
- 스택
- 2805
- 딕셔너리
- 큐
- 1764
- 1182
- 10815
- 10816
- 17478
- 1358
- 10971
- 1759
- 수학
- 1715
- 자료구조
- 백트래킹
- 덱
- 브루트포스
- 백준
- 싸피
- 러스트
- 11051
- 프로그래머스
- 빌림
- 10845
- 조합
- dp
- 파이썬
- 삼성청년소프트웨어아카데미
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |