공부하기/백준 500

[Python] 백준 풀기 14425 - 문자열 집합

파이썬 백준 14425번 https://www.acmicpc.net/problem/14425 14425번: 문자열 집합 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어 www.acmicpc.net 문제 보기 문제 풀기 아무 생각 없이 쉬워 보이는 문제를 선택하고 풀고 나서, 기록과 정리를 위해 이곳에 글을 쓰다가 이 문제는 arrray 를 사용하는 게 아니라 set() 을 사용해야 한다는 생각이 들었다. 다시 수정하여 정답을 제출. set() 사용 연습을 하자. N 번 받아오는 각 문자열을 S 에 차례대로 추가를 한 후, set 또는..

공부하기/백준 2022.09.26

[Python] 백준 풀기 10866 - 덱

파이썬 백준 10866번 실버4 https://www.acmicpc.net/problem/10866 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 문제 보기 문제 풀기 각각의 텍스트 입력에 대해 if 문으로 다양한 deque 명령을 실행하였다. 덱 deque 사용을 연습하고 있어요. 코드 보기 import sys inputdata = sys.stdin.readline from collections import deque N = int(inputdata().strip()) dq = deque()..

공부하기/백준 2022.09.24

[Python] 백준 풀기 25501 - 재귀의 귀재

파이썬 백준 25501번 브론즈2 https://www.acmicpc.net/problem/25501 25501번: 재귀의 귀재 각 테스트케이스마다, isPalindrome 함수의 반환값과 recursion 함수의 호출 횟수를 한 줄에 공백으로 구분하여 출력한다. www.acmicpc.net 문제 보기 안으로 파고 파고 파고 드는 재귀 함수 형태를 이해하자. int recursion(const char *s, int l, int r){ if(l >= r) return 1; else if(s[l] != s[r]) return 0; else return recursion(s, l+1, r-1); } int isPalindrome(const char *s){ return recursion(s, 0, strle..

공부하기/백준 2022.09.23

[Python] 백준 풀기 10870 - 피보나치 수 5

파이썬 백준 10870번 브론즈2 https://www.acmicpc.net/problem/10870 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 문제 보기 F(n) = F(n-1) + F(n-2) 사용하기 문제 풀기 fnFibonacci(num) 안에는 초기값의 역할이 되어줄 n = 0, n = 1 에서의 경우, if 문을 통해 그 수를 그대로 return 해줌. else 문에 해당하는 2 이상의 자연수에 대해서 피보나치 수의 식을 따르며 재귀함수 형태로 표현됨. n..

공부하기/백준 2022.09.22

[Python] 백준 풀기 4949 - 균형잡힌 세상

파이썬 백준 4949번 실버4 https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 각 줄은 마침표(".")로 끝난다 www.acmicpc.net 문제 보기 문제 풀기 빈 bracket_stack = [] 에 열린 괄호가 나올때마다 append() 로 추가 시킴. 닫힌 괄호가 등장하면 bracket_stack 이 비어있는지 또는 bracket_stack 의 마지막 원소가 다른 형태의 열린 괄호인지 확인하여 check. 조건을 만족하지 못하는 경우를 벗어나 yes 를 출력하기 위한 조건 el..

공부하기/백준 2022.09.21

[Python] 백준 풀기 15652 - N과 M (4)

파이썬 백준 15652번 실버3 https://www.acmicpc.net/problem/15652 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 문제 보기 문제 풀기 이전 문제 15651번에서 가능한 모든 숫자로 이루어진 수열을 찾는 코드에 조건을 추가. 수열에 새로이 추가되는 원소는 이전 원소보다 같거나 큰 수가 들어가야 하기때문에 i 로 for 반복문을 돌리면서 불러오는 재귀함수 fnDFS() 의 num_sequence 축적 원소들은 i 보다 작아질 수 없음. 즉, i 는 num_sequence 에 들..

공부하기/백준 2022.09.21

[Python] 백준 풀기 15651 - N과 M (3)

파이썬 백준 15651번 실버3 https://www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 문제 보기 문제 풀기 15649번 문제에서 중복을 허용하지 않기 위해 작성 되었던 if i not in num_sequence: 가 빠진 상태로 코드를 작성하여 원소의 중복을 허용 함. 코드 보기 import sys inputdata = sys.stdin.readline N, M = map(int, inputdata().split()) num_sequence = ..

공부하기/백준 2022.09.20

[Python] 백준 풀기 11866 - 요세푸스 문제 0

파이썬 백준 11866번 실버5 https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 문제 보기 문제 풀기 초기 숫자열을 K 만큼 for loop 을 돌리면서 K 전까지는 이동을 위한 if 문, K 에 도달했을때 그 수를 제거 및 josephus_seq = deque() 에 추가를 위한 elif 문을 사용하는 규칙을 갖는 함수 작성. 숫자열의 개수가 0 이 될때까지 while loop 을 돌리는데 fnRule 함수를 반복 실행함. 출력 답안의 포맷을 맞추기 위한 for 문 작성. 코드 보기 import sys inputdata = s..

공부하기/백준 2022.09.19

[Python] 백준 풀기 15650 - N과 M (2)

파이썬 백준 15650번 실버3 https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 문제 보기 문제 풀기 15649번 문제에서 중복 수열을 제거하기 위해 원소의 자리가 올라갈때마다 시작 포인트를 지정하여 수열의 아랫자리 중복을 피한다. 이를 위해 fnDFS 시작때 숫자 1을 지정. 함수안 start 변수를 지정해주고 for문 시작을 start 변수로 재귀함수를 호출할때에는 i 값을 +1 증가시킨다. 코드 보기 import sys inputdata..

공부하기/백준 2022.09.19

[Python] 백준 풀기 15649 - N과 M (1)

파이썬 백준 15649번 실버3 https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 문제 보기 뭍제 풀기 DFS 를 활용한다. 없는 원소일경우 새로 추가하기 위해 num_sequence.append(i) 를 사용하고, 순차적으로 진행되는 다음 상위 트리구조로 이동하기 위해 num_sequence.pop() 를 이용한다. 코드 보기 import sys inputdata = sys.stdin.readline N, M = map(int, inputda..

공부하기/백준 2022.09.18