codekata 34

[프로그래머스] #35 부족한 금액 계산하기

▶ 문제놀이기구의 원래 이용료는 price 원 인데, N 번 째 이용한다면 원래 이용료의 N 배를 받기로 했다. 즉, 처음 이용료가 100 이었다면 2번째는 200, 3번째는 300으로 요금이 인상된다.놀이기구를 count 번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지를 return 하는 solution 함수 완성하기. 단, 금액이 부족하지 않으면 0 return ▶ 제한사항놀이기구의 이용료 price는 자연수 : 1 ≤ price ≤ 2,500처음 가지고 있던 금액 money는 자연수 : 1 ≤ money ≤ 1,000,000,000놀이기구의 이용 횟수 count는 자연수 : 1 ≤ count ≤ 2,500 ▶ 풀이 왜 놀이기구를 탈 수록 요금이 비싸지지? 이해안됨그래도 풀기def ..

codekata 2024.08.05

[프로그래머스] #34 문자열 내림차순으로 배치하기

▶ 문제문자열 s에 나타나는 문자를 큰 것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수 solution 완성하기s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주함. ▶ 제한사항str은 길이 1 이상인 문자열 ▶ 풀이def solution(s): return ''.join(sorted(s, reverse = True))통과!아 처음으로 만족스러운 코드 나온듯 ㅜ  미리 sorted 함수 실험햇던거s = 'KingGodDino'print(sorted(s))# ['D', 'G', 'K', 'd', 'g', 'i', 'i', 'n', 'n', 'o', 'o']print(sorted(s, reverse = True))# ['o', 'o', 'n', 'n', 'i', 'i..

codekata 2024.08.05

[프로그래머스] #32 내적 (zip 함수)

▶ 문제길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어진다.a, b의 내적을 return 하도록 solution 함수 완성a와 b의 내적 : a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] (n은 a,b길이) ▶ 제한사항a, b의 길이는 1 이상 1,000 이하입니다.a, b의 모든 수는 -1,000 이상 1,000 이하입니다. ▶ 풀이def solution(a, b): return sum(a[i]*b[i] for i in range(len(a)))통과!이번엔 문제에 그냥 어떻게 풀어야할지가 적혀있어서 그림그릴 필요가 없엇다. +zip() 함수는 여러개의 시퀀스를 병렬로 묶어 튜플의 리스트를 생성한다따라서 a, b 두 개의 시퀀스를 zip으로 묶어 요소를 ..

codekata 2024.08.01

[프로그래머스] #31 수박수박수? (방법3가지)

▶ 문제길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution 만들기.ex) n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴 ▶ 제한조건n은 길이 10,000이하인 자연수 ▶ 풀이def solution(n): answer = '' for i in range(n): if i % 2 == 0: answer += "수" else: answer += "박" return answer오예 통과! +다른 풀이들도 신기한게 있어서 훔쳐봤다.방법1) def solution(n): return "".join("수박"[i%2] for i in range(n))내가 한거..

codekata 2024.07.31

[프로그래머스] #30 가운데 글자 가져오기 (슬라이싱)

▶ 문제단어 s의 가운데 글자를 반환하는 함수 solution 만들기. 단어의 길이가 짝수라면 가운데 두 글자 반환하면 됨. ▶ 제한사항s는 길이가 1 이상, 100 이하인 스트링 ▶ 풀이def solution(s): if len(s) % 2 == 1: return s[len(s)//2] else: return s[len(s)//2-1] + s[len(s)//2]통과!  우와 다른사람 풀이 구경슬라이싱을 이용할 수도 있다! 주의할 점은슬라이싱 [start : stop] 에서 stop 지점 요소는 포함되지 않는다range랑 똑같네word = "power"start = (len(word) - 1) // 2stop = len(word) // 2 + 1 # 미포함pr..

codekata 2024.07.30

[프로그래머스] #29 제일 작은 수 제거하기 (remove함수)

▶ 문제정수를 저장한 배열, arr에서 가장 작은 수를 제거한 배열을 리턴하는 함수 solution 완성하기. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하기.ex) arr이 [4, 3, 2, 1] 인 경우는 [4, 3, 2] 리턴ex) arr이 [10] 이면 [-1] 리턴 ▶ 제한조건arr은 길이 1 이상인 배열인덱스 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] ▶ 풀이def solution(arr): answer = arr.remove(min(arr)) if answer: return answer return [-1] # 실행한 결괏값 [-1]이 기댓값 [4,3,2]과 다릅니다.틀림.. 모든 값이 다 [-1]로 나온다..ㅜ 찾아본..

codekata 2024.07.30

[프로그래머스] #28 없는 숫자 더하기

▶ 문제0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어짐. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수 완성하기. ▶ 제한사항1 ≤ numbers 의 길이 ≤ 90 ≤ numbers 의 모든 원소 ≤ 9numbers 의 모든 원소는 서로 다름 ▶ 풀이def solution(numbers): return 45 - sum(numbers) 통과!

codekata 2024.07.26

[프로그래머스] #27 핸드폰 번호 가리기 (문자열 연산)

▶ 문제프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가린다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *로 가린 문자열을 리턴하는 함수 solution을 완성해라 ▶ 제한조건phone_number는 길이 4 이상, 20 이하인 문자열 ▶ 풀이def solution(phone_number): num = len(phone_number)-4 return '*' * num, phone_number[-4:] # 실행한 결괏값 ["*******","4444"]이 기댓값 "*******4444"과 다릅니다틀림 왜 리스트 형태로 나온다고 하지? 그래서 파이참에서 실행해봤다.def solution..

codekata 2024.07.24

[프로그래머스] #26 음양 더하기 (zip 함수)

▶ 문제어떤 정수들이 있다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어진다. 실제 정수들의 합을 구하여 return 하도록 solution 함수 완성 ▶ 제한사항absolutes의 길이는 1이상 1,000 이하absolutes의 모든 수는 각각 1이상 1,000 이하signs의 길이는 absolutes의 길이와 같다signs[i]가 참이면 absolutes[i]의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미함 ▶ 풀이def solution(absolutes, signs): total = 0 for i in range(len(signs)): if signs[i]: ..

codekata 2024.07.23

[프로그래머스] #25 나누어떨어지는 숫자배열 (sorted(iterable)=[list])

▶ 문제array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수 solution 작성divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환 ▶ 제한사항arr은 자연수를 담은 배열정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j]divisor는 자연수array는 길이 1이상인 배열 ▶ 풀이def solution(arr, divisor): answer = [] for element in arr: if element % divisor == 0: answer.append(element) if answer: return sorted(answer) ..

codekata 2024.07.22