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/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 주어진 알파벳으로 만들수 있는 모든 경우의 수를 조사한다. (브루트포스) 그 경우가 유망하면 계속 탐색하고 그렇지 않으면 더 조사하지 않는다. (백트래킹) 모음의 개수만 생각했는데 자음의 개수도 고려해줘야 한다. 따라서 chk라는 배열을 선언하여 자음의 개수와 모음의 개수 모드를 검사하였다. # 암호 만들기 import sys input = sys.stdin.readline L, C = map(int,..
https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 문제를 보자마자 바로 그리디가 떠올랐다. 그리디 문제를 많이 풀어보지 않아 개념을 찾아가며 풀었다. 5로 나누어 떨어질 때, 그렇지 않으면 3만큼 줄여가며 N을 감소시킨다. 그러다가 while문이 끝날 때까지 가능하지 않으면 -1을 출력하는 간단한 프로그램이다. 그리디 공부를 더 열심히 해야 할 것 같다. # 설탕 배달 import sys input = sys.stdin.readline N = int(inp..
https://www.acmicpc.net/problem/1358 1358번: 하키 첫째 줄에 수 W H X Y P가 주어진다. P는 선수의 수이다. W와 H는 100보다 작거나 같은 자연수이고, H는 짝수이다. X와 Y는 절댓값이 100보다 작거나 같은 정수이다. P는 최대 50인 자연수이다. 둘째 줄부 www.acmicpc.net 이 문제는 두 점 사이의 거리를 구할 수 있느냐 없느냐를 묻는 간단한 수학 문제이다. 나는 세 가지의 경우로 나누어 조건문을 작성하였다. 1. 플레이어가 사각형 내부에 있느냐 2. 플레이어가 왼쪽 원(R1) 내부에 있느냐 3. 플레이어가 오른쪽 원(R2) 내부에 있느냐 물론 중복되는 경우도 있지만 생각한 방법은 위와 같았다! # 하키 import sys input = sys..
https://www.acmicpc.net/problem/1015 1015번: 수열 정렬 P[0], P[1], ...., P[N-1]은 0부터 N-1까지(포함)의 수를 한 번씩 포함하고 있는 수열이다. 수열 P를 길이가 N인 배열 A에 적용하면 길이가 N인 배열 B가 된다. 적용하는 방법은 B[P[i]] = A[i]이다. 배열 A가 주 www.acmicpc.net 하.. 문제를 이해하는게 어려웠다... (글을 많이 읽자...) 그래서 B가 오름차순이라는건지~ 내림차순이라는건지~ 헷갈렸다 ㅎㅎ... 결론부터 말하자면!! A를 정렬하는 문제이다! 인덱스와 값에 모두 접근하기 위해 딕셔너리를 사용했는데 굳이? 사용해야 하나 싶긴 하다. A가 중복이 가능하기 때문에 방문처리도 해줘야 한다. 따라서 visited..
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/17478 17478번: 재귀함수가 뭔가요? 평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대 www.acmicpc.net # 재귀함수가 뭔가요? import sys input = sys.stdin.readline N = int(input()) def func(i): print("____" * i + "\"재귀함수가 뭔가요?\"") if i == N: print("____" * i + "\"재귀함수는 자기 자신을 호출하는 함수라네\"") print("____" * i + "라고 답변하였지.") return else:..
https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 이 문제는 백트래킹을 활용한 간단한 조합 문제이다. 그런데 '틀렸습니다' 가 떴다. 그때 작성한 코드는 아래와 같다. # 부분수열의 합 import sys input = sys.stdin.readline # backtracking def dfs(sum_value, idx): global answer if len(res) > 0 and sum_value == S:..
- Total
- Today
- Yesterday
- 10815
- 백준
- 1764
- 싸피
- 백트래킹
- 브루트포스
- 큐
- 자료구조
- 스택
- heapq
- 11051
- 빌림
- 10971
- 2805
- 수학
- 러스트
- 파이썬
- 1759
- 17478
- 삼성청년소프트웨어아카데미
- 조합
- 10845
- 10816
- 1715
- dp
- 1358
- 덱
- 1182
- 딕셔너리
- 프로그래머스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |