Carpe diem

NLP 관련 석사 과정 재학 중 (2022.03 ~ )

코테 58

이진수 변환

[문제] 자연수 N이 주어진다. N을 이진수로 바꿔서 출력하는 프로그램을 작성하시오. · 제한사항 1. 자연수 N은 1이상, 100,000,000,000,000이하이다. 2. N을 이진수로 바꿔서 출력하며, 이진수는 0으로 시작하면 안된다. · 입출력 예 N return 53 110101 [풀이] 1. Me n = int(input()) def binary(num: int) -> str: print(bin(num)[2:]) binary(n) bin 메소드를 사용하여 입력받은 수를 이진수로 변환하고, 이진수로 변환할 경우 앞에 '0b'가 붙기 때문에 리스트 슬라이싱을 이용하여 '0b'를 제거하였다. 이 문제 출제의 요점인 재귀함수 호출을 통해 다른 방법으로 풀어볼 수 있을 것 같다.

팩토리얼

[문제] 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. · 제한사항 1. 정수 N은 0보다 크거나 같고 12보다 작거나 같다. · 입출력 예 N return 10 3628800 0 1 [풀이] 1. Me n = int(input()) def factorial(n: int) -> int: if n == 1: return 1 elif n == 0: return 1 else: return n * factorial(n-1) print(factorial(n)) 일반적인 팩토리얼 풀이법을 사용하여 문제를 풀었다. 재귀함수 호출을 통해 팩토리얼을 계산하고, n이 1 또는 0일 경우 1을 반환한다.

전화번호 문자 조합

[문제] 2에서 9까지 숫자가 주어졌을 때 전화 번호로 조합 가능한 모든 문자를 출력하라 · 입출력 예 digits return "23" ["ad", "ae", "af", "bd", "bf", "bf", "cd", "ce", "cf"] [풀이] 1. 모든 조합 탐색 -> 가능한 경우를 모두 조합하는 형태로 전체를 탐색한 후 백트래킹하면서 결과를 조합할 수 있다. 입력값 digits를 자릿수로 쪼개어 반복하고, 숫자에 해당하는 모든 문자열을 반복하며 문자 단위로 재귀 탐색을 진행한다. 문자를 조합해 만들 수 있는 길이는 입력값의 길이와 동일하므로, 해당 조건을 재귀함수의 종료 조건으로 설정하고, 조건에 맞지 않을 경우 dfs를 반복 수행한다.

섬의 개수

[문제] 1을 육지로, 0을 물로 가정한 2D 그리드 맵이 주어졌을 때, 섬의 개수를 계산하라. (연결되어 있는 1의 덩어리 개수를 구하라) · 입출력 예 grid map return 11110 11010 11000 00000 1 11000 11000 00100 00011 3 [풀이] 1. DFS로 그래프 탐색 이와 같이 작성하였을 경우, grid를 dfs 함수 호출시마다 넘겨주어야 하고, 함수 호출 시 매번 self.가 따라 붙는다. 2. DFS로 그래프 탐색 (중첩함수 사용) DFS 탐색을 하는 dfs 함수는 동서남북을 모두 탐색하며 재귀호출한다. 이동하고자 하는 곳이 육지가 아닌 경우에 return 하도록 설정해 줌으로써 연결되어 있는 섬을 구할 수 있다. 이 함수에서 이미 방문했던 곳(grid[i..

일일 온도

[문제] 매일의 화씨 온도(˚F) 리스트 T를 입력받아, 더 따뜻한 날씨를 위해서는 며칠을 더 기다려야 하는지를 출력하라 · 입출력 예 T [73, 74, 75, 71, 69, 72, 76, 73] return [1, 1, 4, 2, 1, 1, 0, 0] [풀이] 1. 스택 값 비교 -> 현재의 인덱스를 계속 스택에 쌓아두다가, 이전보다 상승하는 지점에서 현재 온도와 스택에 쌓아둔 인덱스 지점의 온도 차이를 비교 하여, 더 높다면 스택의 값을 pop()으로 꺼내고, 현재 인덱스와 스택에 쌓아둔 인덱스의 차이를 정답으로 처리한다. def dailyTemperatures(T: list[int]) -> list[int]: answer = [0] * len(T) stack = [] for i, cur in en..

Hashing

[문제] APC에 온 것을 환영한다. 만약 여러분이 학교에서 자료구조를 수강했다면 해시 함수에 대해 배웠을 것이다. 해시 함수란 임의의 길이의 입력을 받아서 고정된 길이의 출력을 내보내는 함수로 정의한다. 해시 함수는 무궁무진한 응용 분야를 갖는데, 대표적으로 자료의 저장과 탐색에 쓰인다. 이 문제에서는 여러분이 앞으로 유용하게 쓸 수 있는 해시 함수를 하나 가르쳐주고자 한다. 먼저, 편의상 입력으로 들어오는 문자열에는 영문 소문자(a, b, ..., z)로만 구성되어있다고 가정하자. 영어에는 총 26개의 알파벳이 존재하므로 a에는 1, b에는 2, c에는 3, ..., z에는 26으로 고유한 번호를 부여할 수 있다. 결과적으로 우리는 하나의 문자열을 수열로 변환할 수 있다. 예를 들어서 문자열 "abb..