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

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

romi__ 2024. 9. 27. 12:24

/date 24.09.27.

 

📌 1) 특정 문자 제거하기

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

 

프로그래머스

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

programmers.co.kr

def solution(my_string, letter):
    string = my_string.replace(letter, "")
    return string

 

✔️ 어떻게 해결할지 고민하다가 저번에 공부하면서 작성한 블로그 글을 읽어봤더니 string에서도 추가 및 삭제가 가능하다는 것을 알게 되었다. 덕분에 Replace를 활용해서 간단히 해결했다. 아래는 내가 정리해 두었던 string에 대한 기초 문법!

✔️ 문자열은 큰/작은따옴표로 감싸서 사용할 수 있습니다. 한 가지 특징은 추가 및 삭제가 가능하다는 것인데, 기존 객체 자체를 추가/삭제하는 것이 아니라 새로운 객체를 반환하는 것입니다. 예를 들어 string = "He"라는 문자열을 만들었습니다. 그러고 나서 string += "llo"라는 코드를 작성하였다면, string은 He를 참조하는 것이 아닌 Hello를 참조하여 저장하게 됩니다. 수정 또한 가능합니다. replace()를 활용하여 찾을 문자열과 변경할 문자열을 인수로 받아 수정합니다. 예를 들어 string = string.replace("l", "")라고 한다면 l을 찾아 모두 삭제하라는 의미가 됩니다.

 

 

 

📌 2) 자릿수 더하기

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

 

프로그래머스

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

programmers.co.kr

def solution(n):
    return sum(int(num) for num in str(n))

 

✔️ sum도 기본 기능으로 있군...

 

 

📌 3) 배열 원소의 길이

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

 

프로그래머스

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

programmers.co.kr

def solution(strlist):
    answer = []
    for str in strlist:
        k=len(str)
        answer.append(k)
    return answer

 

✔️ 한 번에 풀었다! 야호! 근데 map 이용해서 한 줄 만에 끝내는 사람들도 있다... 대단

 

 

📌 4) 피자 나눠 먹기 (1)

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

 

프로그래머스

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

programmers.co.kr

import math

def solution(n):
    return math.ceil(n/7)

 

✔️ 최대공약수 문제에서 math라는 내장 모듈을 사용하면 따로 함수를 만들 필요 없이 최대공약수를 구할 수 있었다. 그럼 당연히 올림, 버림, 반올림 함수도 있겠다 싶어서 구글링 해서 적용!

 

 

📌 5) 피자 나눠 먹기 (2)

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

import math

def solution(n):
    k = 6 * n / math.gcd(6, n)
    return k/6

 

✔️최대공약수는 라이브러리에 있길래 최소공배수도 있을 줄 알았지... 없구나 (멋윽)

 

 

📌 6) 피자 나눠 먹기 (3)

피자문제 끝장을 보자

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

 

프로그래머스

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

programmers.co.kr

import math

def solution(slice, n):
    return math.ceil(n/slice)

 

 

 

📌 7) 최빈값 구하기

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

 

프로그래머스

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

programmers.co.kr

from collections import Counter

def solution(array):
    # 각 숫자의 등장 횟수를 센다.
    count = Counter(array)
    
    # 등장 횟수가 가장 많은 값을 찾는다.
    max_count = max(count.values())
    
    # 최빈값이 여러 개인지 확인
    mode_list = [key for key, value in count.items() if value == max_count]
    
    # 최빈값이 여러 개일 경우 -1 반환
    if len(mode_list) > 1:
        return -1
    else:
        return mode_list[0]

 

✔️counter 사용하고 싶지 않았지만... 두통이슈로 빠른 길을 택함.

 

 

 

/*사족입니다*/

  • 점점 답안 자체를 구글링하지 않고 내 힘으로 풀 수 있는 문제가 늘어가고 있어서 뿌듯하다! 그래도 여전히 최선의 답을 내놓는 것은 쉽지 않지만... 첫 술에 배부를 순 없지