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

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

romi__ 2024. 10. 5. 14:01

/date 24.10.04.

 

📌 1) 한 번만 등장한 문자

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

def solution(s):
    answer = []
    for i in s:
        if s.count(i) == 1:
            answer.append(i)
    return "".join(sorted(answer))

 

✔️역시 꾸준히 해야 하는데 휴일에 좀 쉬었다고 감을 잃었다...

 

 

📌 2) 7의 개수

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

 

프로그래머스

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

programmers.co.kr

def solution(array):
    a = ''
    answer = 0
    for i in array:
        a += str(i)
    for k in a:
        if k == '7' :
            answer += 1
    return answer

 

 

📌 3) 컨트롤 제트

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

 

프로그래머스

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

programmers.co.kr

def solution(s):
    a = s.split()
    answer = 0
    prev = 0
    for i in a:
        if i == 'Z':
            answer -= prev
            continue
        prev = int(i)
        answer += prev
    return answer

 

 

📌 4) 소인수분해

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

 

프로그래머스

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

programmers.co.kr

def solution(n):
    sosu = []
    answer = []
    i = 2
    while i <= n:
        if n % i == 0:
            sosu.append(i)
            n = n/i
        else:
            i += 1
    for k in sosu:
        if k not in answer:
            answer.append(k)
    set(answer)
    return answer

 


📌 5) 이진수 더하기

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

 

프로그래머스

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

programmers.co.kr

def solution(bin1, bin2):
    a = '0b' + bin1
    b = '0b' + bin2
    k = int(a, 2) + int(b, 2)
    return format(k, 'b')

 

 

📌 6) 잘라서 배열로 저장하기

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

 

프로그래머스

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

programmers.co.kr

def solution(my_str, n):
    answer = []
    k = len(my_str)//n
    if len(my_str)%n == 0:
        for i in range(1, k+1):
            answer.append(my_str[n*(i-1):n*i])
    else:
        for i in range(1, k+2):
            answer.append(my_str[n*(i-1):n*i])
    return answer

 

 

 

📌 8) 문자열 계산하기

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

 

프로그래머스

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

programmers.co.kr

def solution(my_string):
    return eval(my_string)

 

✔️ eval(): 문자열로 저장된 수식을 계산해주는 파이썬 내장 함수. 파이썬에서 계산할 수 없는 수식일 경우 syntax error 발생

 

 

📌 9) 영어가 싫어요

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

 

프로그래머스

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

programmers.co.kr

def solution(numbers):
    num_dict = {
        "zero": "0", "one": "1", "two": "2", "three": "3", "four": "4",
        "five": "5", "six": "6", "seven": "7", "eight": "8", "nine": "9"
    }
    
    answer = ""
    while numbers:
        for word in num_dict:
            if numbers.startswith(word):  # numbers가 특정 단어로 시작하는지 확인
                answer += num_dict[word]   # 해당 숫자를 answer에 추가
                numbers = numbers[len(word):]  # 해당 단어만큼 자르고 나머지 처리
                break  # 매칭이 되면 다음 반복으로 넘어감
    return int(answer)  # 최종적으로 문자열을 정수로 변환

 

음... 다른 풀이도 보자

def solution(numbers):
    for num, eng in enumerate(["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]):
        numbers = numbers.replace(eng, str(num))
    return int(numbers)

 

이게 훨씬 간단하고 마음에 든다. 나온 김에 enumerate에 복습해보면...

✔️ enumerate() : 순서가 있는 자료형을 받았을 때, 인덱스와 값을 포함하여 리턴. 즉, 인덱스와 값에 동시에 접근하면서 for문을 돌리고 싶다면 enumerate를 활요하면 된다.

 

아래 블로그에 예제와 함께 잘 설명되어 있다.

 

[파이썬] 내장함수 enumerate()

순서가 있는 자료형(list, set, tuple, dictionary, string)을 입력으로 받았을 때, 인덱스와 값을 포함하여 리턴for문과 함께 자주 사용됨인덱스와 값을 동시에 접근하면서 루프를 돌리고 싶을 때 사용형

velog.io

 

 

 

📌 10) 삼각형의 완성조건

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

 

프로그래머스

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

programmers.co.kr

def solution(sides):
    answer = []
    sides.sort()
    for i in range(1, sides[1]+1):
        if i + sides[0] > sides[1]:
            answer.append(i)
    for k in range(sides[1]+1, sides[0]+sides[1]+1):
        if k < sides[0]+sides[1]:
            answer.append(k)
    return len(answer)

 

 

 

📌 11) 외계어 사전

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

 

프로그래머스

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

programmers.co.kr

def solution(spell, dic):
    a = []
    answer = 0
    for i in dic:
        a.append("".join(sorted(i)))
    for k in a:
        if k == "".join(sorted(spell)):
            return 1
    return 2