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

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

romi__ 2024. 10. 9. 22:17

/date 24.10.09.

 

 

📌 1) 로그인 성공?

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

 

프로그래머스

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

programmers.co.kr

def solution(id_pw, db):
    answer = ""
    for i in db:
        if i[0] == id_pw[0]:
            if i[1] == id_pw[1]:
                answer = "login"
            else:
                answer = "wrong pw"
                break
        else:
            answer = "fail"
    return answer

 

✔️ 문제만 읽었을 땐 드디어 enumerate 한 번 써보나? 했지만 그럴 필요가 없었다. 

✔️ 테스트 케이스에서 한 문제가 계속 걸리길래 고민했는데, 중첩 if에서 break를 해주지 않으면 wrong pw로 결과가 나야 할 것이 fail로 나올 수도 있다는 점을 놓쳤다. break 추가하고 해결!

 

 

📌 2) 등수 매기기

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

 

프로그래머스

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

programmers.co.kr

def solution(score):
    avg = [(sum(s)/2, i) for i, s in enumerate(score)]
    sorted_avg = sorted(avg, key=lambda x: -x[0])
    rank=[0]*len(score)
    
    current = 1
    for i in range(len(sorted_avg)):
        if i > 0 and sorted_avg[i][0] == sorted_avg[i-1][0]:
            rank[sorted_avg[i][1]] = rank[sorted_avg[i-1][1]]
        else:
            rank[sorted_avg[i][1]] = current
        current += 1
    return rank

 

✔️ 코드 짜는 게 까다로웠다. 솔직히 내 코드를 보면 파이썬을 잘 이해하고 있는 사람의 코드라고 생각되지는 않는다... 그렇지만 첫 술에 배부를 순 없지

✔️ 다른 사람이 올린 코드를 찾아보았는데 훨씬 깔끔해서 공유

 

 

✔️ index는 중복값이 있을 때 더 앞의 값을 리턴해준다. 분명 저번에 나도 활용해 본 코드였는데!

 

 

 

📌 3) 치킨 쿠폰

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

 

프로그래머스

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

programmers.co.kr

def solution(chicken):
    num = 0
    serv = chicken//10
    na = chicken%10
    cou = serv + na
    while cou >= 10:
        num += serv
        cou = serv + na
        serv = cou//10
        na = cou%10
    return num

 

 

 

📌 4) 저주의 숫자 3

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

 

프로그래머스

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

programmers.co.kr

def solution(n):
    answer = 0
    for i in range(1, n+1):
        answer += 1
        while '3' in str(answer) or answer%3==0:
            answer+=1
    return answer