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

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

romi__ 2024. 9. 29. 18:46

/date 24.09.29.

 

📌 1) 인덱스 바꾸기

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

 

프로그래머스

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

programmers.co.kr

def solution(my_string, num1, num2):
    my_list = list(my_string)
    my_list[num1], my_list[num2] = my_list[num2], my_list[num1]
    answer = "".join(my_list)
    return answer

 

✔️ replace로 해결해 보려다가 주어진 것으로는 replace를 절대 활용할 수 없다는 것을 깨닫고 빠르게 노선을 틀었다.

 

 

📌 2) 배열 회전시키기

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

 

프로그래머스

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

programmers.co.kr

def solution(numbers, direction):
    answer = []
    if direction == "right":
        for i in range(0, len(numbers)):
            if i != len(numbers) - 1:
                answer.insert(i+1, numbers[i])
            else:
                answer.insert(0, numbers[-1])
    else:
         for i in range(0, len(numbers)):
            if i != 0:
                answer.insert(i-1, numbers[i])
            else:
                answer.insert(-1, numbers[0])
    return answer

 

✔️ 지-저분하길래 다른 사람들 풀이를 찾아봤다

 

def solution(numbers, direction):
    return [numbers[-1]] + numbers[:-1] if direction == 'right' else numbers[1:] + [numbers[0]]

 

 

📌 3) 369게임

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

 

프로그래머스

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

programmers.co.kr

def solution(order):
    answer = 0
    a = list(map(int, str(order)))
    for i in a:
        if i%3 == 0 and i != 0:
            answer += 1
    return answer

 

✔️정수를 한 번에 리스트로 바꾸는 방법은 없는거군아... ㅎ 구글링이 나를 살렸다

 

 

📌 4) 외계행성의 나이

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

 

프로그래머스

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

programmers.co.kr

def solution(age):
    alpha = 'abcdefghij'
    a = list(alpha)
    b = list(map(int, str(age)))
    answer = ''
    for i in b:
        answer += str(a[i])
    return answer

 

 

 

📌 5) 문자열 정렬하기 (1)

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

 

프로그래머스

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

programmers.co.kr

def solution(my_string):
    answer = []
    for i in my_string:
        if i in ['1','2','3','4','5','6','7','8','9','0']:
            k = int(i)
            answer.append(k)
    answer.sort()
    return answer

 

근데 괜히 복잡하게 푼 것 같아서 다시 풀었다

 

def solution(my_string):
    return sorted([int(i) for i in my_string if i.isdigit() == True])

 

 

📌 6) 문자열 정렬하기 (2)

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

 

프로그래머스

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

programmers.co.kr

def solution(my_string):
    return ''.join(sorted(my_string.lower()))

 

✔️ 문자열은 sort로 정렬되지 않음(배열만 정렬 가능). sorted로 정렬해서 문자열로 추가해 저장해 주어야 한다

 

 

 

📌 7) 진료순서 정하기

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

 

프로그래머스

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

programmers.co.kr

def solution(emergency):
    answer = []
    line = sorted(emergency, reverse = True)
    for i in emergency:
        k = line.index(i) + 1
        answer.append(k)
    return answer

 

 

📌 8) 암호 해독

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

 

프로그래머스

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

programmers.co.kr

def solution(cipher, code):
    answer = ""
    for i in range(1, len(cipher)//code + 1):
        a = i * code - 1
        answer += cipher[a]
    return answer

 

✔️ 생각해보니 slicing으로 풀어도 됐을 것 같다. 시작지점, 끝지점을 지정해 주고 어떤 간격(?)으로 슬라이싱을 할 것인지 지정해 줄 수 있기 때문에 i를 곱해 code의 배수를 만들어주는 파트가 필요하지 않은 방법이 된다.