본문 바로가기
반응형

재귀6

(Python/🥇4)백준알고리즘 12919번 : A와 B 2 문제 바로가기 문제: 수빈이는 A와 B로만 이루어진 영어 단어 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수빈이는 간단한 게임을 만들기로 했다. 두 문자열 S와 T가 주어졌을 때, S를 T로 바꾸는 게임이다. 문자열을 바꿀 때는 다음과 같은 두 가지 연산만 가능하다. 문자열의 뒤에 A를 추가한다. 문자열의 뒤에 B를 추가하고 문자열을 뒤집는다. 주어진 조건을 이용해서 S를 T로 만들 수 있는지 없는지 알아내는 프로그램을 작성하시오. 입력: 첫째 줄에 S가 둘째 줄에 T가 주어진다. (1 ≤ S의 길이 ≤ 49, 2 ≤ T의 길이 ≤ 50, S의 길이 < T의 길이).. 2023. 7. 15.
(Python/🥈2)백준 알고리즘 1182번:부분수열의 합 문제 바로가기 문제: N개의 정수로 이루어진 수열이 있을 때, 크기가 양수인 부분수열 중에서 그 수열의 원소를 다 더한 값이 S가 되는 경우의 수를 구하는 프로그램을 작성하시오. 입력: 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. 출력: 첫째 줄에 합이 S가 되는 부분수열의 개수를 출력한다. 풀이: 1. import sys sys.stdin = open('/Users/song/Desktop/Python/Python/h.txt', 'r') N, S = map(int,sys.stdin.readline().rstrip().spli.. 2023. 6. 27.
(Python/🥇5)백준알고리즘 5639번: 이진 검색 트리 문제 바로가기 문제: 이진 검색 트리는 다음과 같은 세 가지 조건을 만족하는 이진 트리이다. 노드의 왼쪽 서브트리에 있는 모든 노드의 키는 노드의 키보다 작다. 노드의 오른쪽 서브트리에 있는 모든 노드의 키는 노드의 키보다 크다. 왼쪽, 오른쪽 서브트리도 이진 검색 트리이다. 전위 순회 (루트-왼쪽-오른쪽)은 루트를 방문하고, 왼쪽 서브트리, 오른쪽 서브 트리를 순서대로 방문하면서 노드의 키를 출력한다. 후위 순회 (왼쪽-오른쪽-루트)는 왼쪽 서브트리, 오른쪽 서브트리, 루트 노드 순서대로 키를 출력한다. 예를 들어, 위의 이진 검색 트리의 전위 순회 결과는 50 30 24 5 28 45 98 52 60 이고, 후위 순회 결과는 5 28 24 45 30 60 52 98 50 이다. 이진 검색 트리를 전위.. 2023. 6. 19.
(Python/🥈2)백준 알고리즘 1780번: 종이의 개수 문제 바로가기 문제: N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1 중 하나가 저장되어 있다. 우리는 이 행렬을 다음과 같은 규칙에 따라 적절한 크기로 자르려고 한다. 1.만약 종이가 모두 같은 수로 되어 있다면 이 종이를 그대로 사용한다. 2.(1)이 아닌 경우에는 종이를 같은 크기의 종이 9개로 자르고, 각각의 잘린 종이에 대해서 (1)의 과정을 반복한다. 이와 같이 종이를 잘랐을 때, -1로만 채워진 종이의 개수, 0으로만 채워진 종이의 개수, 1로만 채워진 종이의 개수를 구해내는 프로그램을 작성하시오. 입력: 첫째 줄에 N(1 ≤ N ≤ 37, N은 3k 꼴)이 주어진다. 다음 N개의 줄에는 N개의 정수로 행렬이 주어진다. 출력: 첫째 줄에 -1로만 채워진 종이의 개.. 2023. 6. 16.
(Python/Lv2) 쿼드 압축 후 갯수 세기 문제 출처:https://school.programmers.co.kr/learn/courses/30/lessons/68936 풀이: def check(x, y, n, arr): # 탈출 조건 if n == 1: if arr[x][y] == 1: return [0, 1] # 1 카운트 증가 else: return[1, 0] # 0카운트 증가 left_up = check(x, y, n//2, arr) # 2사분면 체크 right_up = check(x, y+n//2, n//2, arr) # 1사분면 체크 left_down = check(x+n//2, y, n//2, arr) # 3사분면 체크 right_down = check(x+n//2, y+n//2, n//2, arr) #4사분면 체크 # 각 축소 후 압.. 2023. 5. 6.
(Python/🥉2) 25501번: 재귀의 귀재 문제 출처:https://www.acmicpc.net/problem/25501 문제 풀이: import sys sys.stdin = open('/Users/song/Desktop/Python/Python/h.txt', 'r') n = int(input()) def recursion(s, l, r): if l >= r: return 1,l elif s[l] != s[r]: return 0,l else: return recursion(s, l+1, r-1) def isPalindrome(s): return recursion(s, 0, len(s)-1) for i in range(n): isp, recu =isPalindrome(input().strip("\n")) print(isp, recu+1) # 0부터.. 2022. 11. 5.
반응형