_Han_
나의 개발 노트
_Han_
  • 분류 전체보기 (272)
    • 데이터 엔지니어링 (29)
    • 인프라 (3)
    • 추천시스템 (11)
    • 코딩테스트 (146)
    • 부트캠프 회고 (15)
    • 회고 (4)
    • 자격증 (1)
    • 파이썬 프로그래밍 (6)
    • 통계 (2)
    • Git (21)
    • 유니티2D (33)

최근 글

반응형
hELLO · Designed By 정상우.
_Han_

나의 개발 노트

[코딩테스트] 프로그래머스 체육복 파이썬(Python)
코딩테스트

[코딩테스트] 프로그래머스 체육복 파이썬(Python)

2023. 3. 7. 10:38
반응형

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

 

프로그래머스

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

programmers.co.kr

def solution(n, lost, reserve):
    lost = {i : False for i in lost}

    reserve = set(reserve)
    temp = set()
    for i in reserve:
        if i in lost:
            temp.add(i)
            lost[i] = True
    reserve -= temp

    for i in reserve:
        if lost.get(i-1) == False:
            lost[i-1] = True
        elif lost.get(i+1) == False:
            lost[i+1] = True
    for i in lost:
        if lost.get(i) == False:
            n -= 1

    return n

먼저 잃어버린 학생이 수업에 참여할 수 있는지 확인하는 lost를 딕셔너리(dict) 자료구조로 변경하였습니다.

그 다음 여벌의 체육복이 있는 학생을 나타내는 reserve를 집합(set) 자료구조로 변경하였습니다.

 

문제의 제한 사항 중 여벌 체육복을 가져온 학생이 체육복을 도난 당했을수 있고, 이 학생은 체육복을 하나만 도난 당했다고 가정하며 다른 학생에게 체육복을 빌려 줄 수 없다고 나와 있습니다.

 

그래서 새롭게 만든 temp로 여벌 체육복이 있지만 도난 당한 학생을 조사하여 reserve에서 제거하고 해당 학생은 lost[i] = True로 바꾸어주었습니다.

  • 해당 학생은 수업을 들을 수 있기 때문에 lost[i]를 True로 바꾸어준 것 입니다.

reserve를 순회하며 먼저 i-1 학생을 조사하여 체육복을 잃어버렸다면 빌려주고 i-1 학생이 잃어버리지 않았다면 i+1 학생을 조사하였습니다.

 

모든 reserve를 확인한뒤에 lost를 확인하면서 lost.get(i) == False

즉 체육복이 빌리지 못한 학생이 있다면 n -= 1을 합니다.

 

반복문이 종료되면 n을 결과로 반환합니다.

반응형

'코딩테스트' 카테고리의 다른 글

[코딩테스트] 프로그래머스 자동차 대여 기록 별 대여 금액 구하기 MySQL  (0) 2023.03.09
[코딩테스트] 프로그래머스 옹알이(2) 파이썬(Python)  (0) 2023.03.08
[코딩테스트] 프로그래머스 바탕화면 정리 파이썬(Python)  (0) 2023.03.06
[코딩테스트] 백준 암호 만들기 파이썬(Python)  (0) 2023.03.06
[코딩테스트] 프로그래머스 덧칠하기 파이썬(Python)  (0) 2023.03.03
    '코딩테스트' 카테고리의 다른 글
    • [코딩테스트] 프로그래머스 자동차 대여 기록 별 대여 금액 구하기 MySQL
    • [코딩테스트] 프로그래머스 옹알이(2) 파이썬(Python)
    • [코딩테스트] 프로그래머스 바탕화면 정리 파이썬(Python)
    • [코딩테스트] 백준 암호 만들기 파이썬(Python)
    _Han_
    _Han_
    학습한 것을 기록합니다.

    티스토리툴바