학습 기록/코딩 테스트 다짜고짜 풀어보기

[python] 코딩 테스트 입문 문제 풀기 (2)

romi__ 2024. 9. 26. 11:20

/date 24.09.26.

 

📌 1) 분수의 덧셈

https://school.programmers.co.kr/learn/courses/30/lessons/120808

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

import math

def solution(numer1, denom1, numer2, denom2):
    numer3 = numer1*denom2 + numer2*denom1
    denom3 = denom1*denom2
    
    k = math.gcd(numer3, denom3)
    
    answer = []
    answer.append(numer3/k)
    answer.append(denom3/k)
    return answer

 

✔️ 통분해서 분자, 분모를 구해둔 다음 최대공약수로 각각을 나누었다.

 

✔️ 최대공약수를 구하는 식을 어떻게 코드로 구현할 것인가 고민을 많이 하다가 결국엔 구글링을 했는데 파이썬에는 math라는 기본 내장 모듈이 있다고 한다. gcd를 활용하면 괄호 안 숫자들의 최대공약수를 자동으로 구해준다.

 

✔️ append를 활용해서 answer 배열에 값을 넣어주었는데, 그러다 보니 코드를 두 줄 작성하게 되었다. extend를 활용하면 한 번에 작성할 수 있었다.

 

 

📌 2) 양꼬치

tmi 양꼬치 좋아함

https://school.programmers.co.kr/learn/courses/30/lessons/120830

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

def solution(n, k):
    answer = n*12000 + k*2000 - n//10*2000
    return answer

 

✔️EZ했죠?

 

 

📌 3) 문자열 뒤집기

https://school.programmers.co.kr/learn/courses/30/lessons/120822

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

def solution(my_string):
    return my_string[::-1]

 

✔️ 슬라이싱Slicing: [start:end:step] 순으로 표기. start는 슬라이싱을 시작할 인덱스로, 생략하면 처음부터 시작된다. end는 슬라이싱을 끝낼 인덱스로, 생략하면 끝까지 포함된다. step은 슬라이싱을 할 때의 간격으로, 양수면 앞으로 이동하고 음수면 뒤로 이동한다. 여기서는 [::-1]로 start와 end의 인덱스를 생략하였으므로 전체 string을 대상으로 하고, -1 step이므로 역순으로 가져온다.

 

(꼼수만 늘어간다)

 

 

📌 4) 짝수 홀수 개수

https://school.programmers.co.kr/learn/courses/30/lessons/120824

def solution(num_list):
    a = 0
    b = 0
    answer = []
    for num in num_list:
        if num%2 == 1:
            a += 1
        else:
            b +=1
    answer.extend([b, a])
    return answer


✔️ 알못인 내가 봐도 최선의 풀이는 아니라서 찾아본 다른 사람 풀이.. 입이 떡 벌어짐

 

 

📌 5) 짝수는 싫어요

https://school.programmers.co.kr/learn/courses/30/lessons/120813

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

def solution(n):
    answer = []
    if n%2 == 0:
        n -=1
        while n > 0:
            answer.append(n)
            n -= 2
    else:
        while n > 0:
            answer.append(n)
            n -= 2
    answer.sort()
    return answer

 

점점 감이 잡힌다..!