카카오 지원서를 제출했고 프로그래머스에서 코테를 본다고 연락을 받았다...
그나마 가장 자신 있는 언어인 Python으로 준비를 해보려고 한다
한동안 Python은 쳐다보지도 않았기 때문에 일단 기초부터 양치기로 풀어가면서 뇌를 좀 풀어보려고 한다
풀면서도 이걸 틀리네 싶어서 쪽팔리긴 하네...
너무 쉽거나 내가 절대 생각해낼 수 없는 풀이들은 제외하고 오답해두려는 문제들만 정리하려고 한다
https://school.programmers.co.kr/learn/challenges/beginner?order=acceptance_desc
첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
👇❌ 나의 오답
def solution(numer1, denom1, numer2, denom2):
a = numer1*denom2 + numer2*denom1
b = denom1*denom2
c = 1000
while (c>1):
if (denom1 % c == 0) & (denom2 % c == 0):
a = a // c
b = b // c
c -= 1
return [a, b]
import math
👇⭕ 정답
import math
def solution(numer1, denom1, numer2, denom2):
b = denom1 * denom2
a = (numer1 * denom2) + (numer2 * denom1)
gcd=math.gcd(a,b)
a = a // gcd
b = b // gcd
answer = [a, b]
return answer
정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요
👇⭕ 나의 정답
def solution(numbers):
for i in range(len(numbers)):
numbers[i] = numbers[i]*2
return numbers
👇⭕⭕⭕ 더 좋은 정답
def solution(numbers):
return [num*2 for num in numbers]
[표현식 for 항목 in 반복가능객체 if 조건문] 형태중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다. 예를 들어 1, 2, 7, 10, 11의 중앙값은 7입니다. 정수 배열 array가 매개변수로 주어질 때, 중앙값을 return 하도록 solution 함수를 완성해보세요.
👇⭕ 나의 정답
def solution(array):
array.sort()
return array[(len(array)//2)]
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
👇⭕ 나의 정답
def solution(array):
if len(array) == 1:
return array[0]
else:
array.sort()
count_list = []
count = 1
for i in range(len(array)-1):
if array[i] == array[i+1]:
count += 1
else:
count_list.append(count)
count = 1
count_list.append(count)
array_copy = list(set(array))
array_copy.sort()
a = array_copy[0]
max = count_list[0]
for i in range(1, len(count_list)):
if max < count_list[i]:
max = count_list[i]
a = array_copy[i]
elif max == count_list[i]:
a = -1
return a
정수 n이 매개변수로 주어질 때, n 이하의 홀수가 오름차순으로 담긴 배열을 return하도록 solution 함수를 완성해주세요.
👇⭕ 나의 정답
def solution(n):
list = []
for i in range(1, n+1):
if i % 2 == 1:
list.append(i)
list.sort()
return list
👇⭕⭕⭕ 더 좋은 정답
def solution(n):
return [i for i in range(1, n+1, 2)]
https://school.programmers.co.kr/learn/courses/30/lessons/81301
👇⭕ 나의 정답
def solution(s):
num = []
for i in range(10):
num.append(str(i))
print(num)
eng = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
for i in range(10):
if eng[i] in s:
s = s.replace(eng[i], num[i])
return int(s)
if ~ elif ~ else
if num1 == num2:
return 1
else:
return -1
위 아래 코드는 동일
return 1 if num1==num2 else -1
[1, 2, 3] * 2의 결과는 [1, 2, 3, 1, 2, 3]
중복을 제거하는 형은 set()
return문이나 print문에 sort()를 쓰면 null값이 반환됨
"seven" in "seveneight" → 참"seveneight" in "seven" → 거짓"ababab".replace("a", "b") "ababab" 문자열에서 "a"를 "b"로 변경"ababab".replace("a", 1) 불가능s = s.replace("a", "b")math.gcd(a, b) a, b 사이의 최대 공약수 구하기math.lcm(a, b) a, b 사이의 최소 공배수 구하기재사용 되는 함수가 아니라면 함수 내 변수는 최대한 지양할 것 (사용하지 말 것)
[표현식 for 항목 in 반복가능객체 if 조건문] 형태