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

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

romi__ 2024. 10. 6. 15:23

/date 24.10.06.

 

📌 1) 숫자 찾기

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

 

프로그래머스

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

programmers.co.kr

def solution(num, k):
    answer = 0
    for i in str(num):
        if i== str(k):
            answer = str(num).index(i) + 1
            break
        else:
            answer = -1
    return answer

 

 

📌 2) K의 개수

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

 

프로그래머스

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

programmers.co.kr

def solution(i, j, k):
    answer = 0
    for n in range(i, j+1):
        for num in str(n):
            if str(k) in num:
                answer += 1
    return answer

 

 

📌 3) 숨어 있는 숫자의 덧셈 (2)

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

 

프로그래머스

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

programmers.co.kr

import re

def solution(my_string):
    answer = 0
    numbers = re.findall(r'\d+', my_string)
    for i in numbers:
        answer += int(i)
    return answer

 

풀다 말았던 문제 전부 해결 완료!

 

 

📌 4) 캐릭터의 좌표

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

 

프로그래머스

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

programmers.co.kr

def solution(keyinput, board):
    answer = []
    x, y = 0, 0
    for key in keyinput:
        if key == "left":
            x -= 1
        elif key == "right":
            x += 1
        elif key == "up":
            y += 1
        else:
            y -= 1
    if abs(x) > board[0]//2:
        if x > 0:
            x = board[0]//2
            answer.append(x)
        else:
            x = -board[0]//2
            answer.append(x)
    else:
         answer.append(x)   
    if abs(y) > board[1]//2:
        if y > 0:
            y = board[1]//2
            answer.append(y)
        else:
            y = -board[1]//2
            answer.append(y)
    else:
        answer.append(y)
    return answer

 

처음엔 이렇게 작성했고 당연히 오답. 코드가 국경을 넘을 정도로 길다^_^,, 수정 렛츠고

 

def solution(keyinput, board):
    x, y = 0, 0

    x_limit = board[0] // 2
    y_limit = board[1] // 2

    for key in keyinput:
        if key == "left":
            x -= 1
        elif key == "right":
            x += 1
        elif key == "up":
            y += 1
        elif key == "down":
            y -= 1
        
        x = max(-x_limit, min(x_limit, x))
        y = max(-y_limit, min(y_limit, y))
    return [x, y]

 

✔️다른 게 아니라 범위를 지정하고 그 범위를 넘어가는 값이 x, y값이 된다면 범위로 값을 조정해 주는 것이 까다로웠다. 그래서 x_limit, y_limit으로 한계값을 미리 지정해 주고, 최종 x y값을 지정하는데 활용하였다.

 

 

📌 5) 직사각형 넓이 구하기

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

 

프로그래머스

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

programmers.co.kr

def solution(dots):
    x_values = [dot[0] for dot in dots]
    y_values = [dot[1] for dot in dots]

    width = max(x_values) - min(x_values)
    height = max(y_values) - min(y_values)

    return width * height

 

 

📌 6) OX 퀴즈

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

 

프로그래머스

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

programmers.co.kr

def solution(quiz):
    answer = []
    for q in quiz:
        arr = q.split("=")
        if eval(arr[0]) == int(arr[1]):
            answer.append("O")
        else:
            answer.append("X")
    return answer

 

 

📌 7) 종이 자르기

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

 

프로그래머스

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

programmers.co.kr

def solution(M, N):
    if M == 1 and N == 1:
        return 0
    elif M == 1 or N == 1:
        return max(M, N)-1
    else:
        return min(M, N)*(max(M, N)-1) + min(M, N) -1

 

✔️ 사실 그냥 M*N -1한 값을 Return 하면 된다... 그렇지만 이건 수학문제가 아니라 코딩문제니까...