728x90

Python/Coding Test 59

[Coding Test] 1463번 : 1로 만들기

백준 코딩테스트 1463번 : 1로 만들기 (동적계획법) 문제 설명 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 문제 풀이 동적계획법의 Bottom-Up 방법을 이용해 풀이 x를 입력받기 위해 input을 해줌 연산 횟수를 저장하기 dp 리스트를 위해 0이 x+1개 있는 리스트로 초기화 반복문을 통해 2~x 까지 반복 i번째 dp 리스트를 i-1 리스트에 +1 해서 저장 (밑에 조건문에 부합하지 않을 경우 i-1 의 연산 횟수에 1을 더해주면 되기 때문) ..

Python/Coding Test 2023.08.18

[Coding Test] 피보나치 수

프로그래머스 코딩테스트 2단계 : 피보나치 수 문제 설명 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다. 예를들어 F(2) = F(0) + F(1) = 0 + 1 = 1 F(3) = F(1) + F(2) = 1 + 1 = 2 F(4) = F(2) + F(3) = 1 + 2 = 3 F(5) = F(3) + F(4) = 2 + 3 = 5 와 같이 이어집니다. 2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수, solution을 완성해 주세요. 문제 풀이 [기초문법] Dynamic Programming(동적계획법) - Python 다이나믹 프로그래밍에서 bottom..

Python/Coding Test 2023.08.16

[Coding Test] 가장 가까운 같은 글자

프로그래머스 코딩테스트 1단계 : 가장 가까운 같은 글자 문제 설명 문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다. 예를 들어, s="banana"라고 할 때, 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다. b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. a는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. n은 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. a는 자신보다 두 칸 앞에 a가 있습니다. 이는 2로 표현합니다. n도 자신보다 두 칸 앞에 n이 있습니다. 이는 2로..

Python/Coding Test 2023.08.06

[Coding Test] 시저암호

프로그래머스 코딩테스트 1단계 : 시저암호 문제 설명 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀면 "a"가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요. 문제 풀이 문자를 숫자로, 숫자를 문자로 변환해주는 함수 (chr, ord)를 이용 영어가 z로 끝나면 다시 a로 넘어갈 수 있도록 만듦 조건문에서 isupper함수로 대문자일 경우, 대문자로 순서를 만듦 islower함수로 소문자일 경우, 소문자로 순서를 만듦 리스트 만큼 조건문을 반복하고 최종적으로 나온 리스트 a를..

Python/Coding Test 2023.08.06

[Coding Test] 다음 큰 숫자

프로그래머스 코딩테스트 2단계 : 다음 큰 숫자 문제 설명 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다. 조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수 입니다. 예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다. 자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요. 문제 풀이 answer에 n보다 1큰 값으로 설정 while 반복문을 통해 n의 이진수와 answer의 이진수의 1의 갯수를 세고 같을 경우 answer를 ..

Python/Coding Test 2023.08.06

[Coding Test] K번째수(정렬)

프로그래머스 코딩테스트 1단계 : K번째수 문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 문제 풀이 arr..

Python/Coding Test 2023.07.29

[Coding Test] 점프와 순간이동

프로그래머스 코딩테스트 2단계 : 점프와 순간이동 문제 설명 OO 연구소는 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) x 2 에 해당하는 위치로 순간이동을 할 수 있는 특수한 기능을 가진 아이언 슈트를 개발하여 판매하고 있습니다. 이 아이언 슈트는 건전지로 작동되는데, 순간이동을 하면 건전지 사용량이 줄지 않지만, 앞으로 K 칸을 점프하면 K 만큼의 건전지 사용량이 듭니다. 그러므로 아이언 슈트를 착용하고 이동할 때는 순간 이동을 하는 것이 더 효율적입니다. 아이언 슈트 구매자는 아이언 슈트를 착용하고 거리가 N 만큼 떨어져 있는 장소로 가려고 합니다. 단, 건전지 사용량을 줄이기 위해 점프로 이동하는 것은 최소로 하려고 합니다. 아이언 슈트 구매자가 이동하려는 거리 N이 주어졌을 때, ..

Python/Coding Test 2023.07.29

[Coding Test] 두 개 뽑아서 더하기

프로그래머스 코딩테스트 1단계 : 두 개 뽑아서 더하기 문제 설명 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 문제 풀이 itertools 라이브러리를 이용해 조합을 사용 반복문으로 numbers 중 2개의 수를 뽑아 answer에 뽑은 두 수를 더해 추가 새롭게 생성된 answer에서 set함수를 이용해 중복 제거 중복을 제거한 answer를 오름차순으로 정렬해 출력 정답 코드 from itertools import combinations def solution(numbers): answer = [] for i in combinati..

Python/Coding Test 2023.07.22

[Coding Test] 문자열 내 마음대로 정렬하기

프로그래머스 코딩테스트 1단계 : 문자열 내 마음대로 정렬하기 문제 설명 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다. 문제 풀이 범위를 strings의 길이로 한 반복문에서 strings의 인덱스 n값을 strings 앞에 붙여 다시 정의함 인덱스 값이 추가된 strings를 sort로 순서대로 정렬 다시 반복문을 실행하여 추가했던 인덱스 n번째 값을 슬라이스해서 answer에 추가 최종적으로 완성된 answer 반환 정답 코드 def solution..

Python/Coding Test 2023.07.21

[Coding Test] 영어 끝말잇기

프로그래머스 코딩테스트 2단계 : 영어 끝말잇기 문제 설명 1부터 n까지 번호가 붙어있는 n명의 사람이 영어 끝말잇기를 하고 있습니다. 영어 끝말잇기는 다음과 같은 규칙으로 진행됩니다. 1번부터 번호 순서대로 한 사람씩 차례대로 단어를 말합니다. 마지막 사람이 단어를 말한 다음에는 다시 1번부터 시작합니다. 앞사람이 말한 단어의 마지막 문자로 시작하는 단어를 말해야 합니다. 이전에 등장했던 단어는 사용할 수 없습니다. 한 글자인 단어는 인정되지 않습니다. 다음은 3명이 끝말잇기를 하는 상황을 나타냅니다. tank → kick → know → wheel → land → dream → mother → robot → tank 위 끝말잇기는 다음과 같이 진행됩니다. 1번 사람이 자신의 첫 번째 차례에 tank를..

Python/Coding Test 2023.07.21
반응형