밍비
프로그램의 편린
밍비
전체 방문자
오늘
어제
  • 분류 전체보기 (64)
    • Spring (2)
    • TIL (23)
    • 프로그래머스 (12)
    • Udemy (16)
    • Typescript (2)
    • MERN (1)
    • AWS (7)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 한입크기로잘라먹는리액트
  • useRef
  • 네이버커넥트
  • Page Moving
  • useNavigate
  • DOM
  • overflow-wrap
  • 한입 크기로 잘라먹는 리액트
  • 데이터 수정
  • API 호출
  • State 합치기
  • Edge Locations
  • Availability Zones
  • useState
  • state 끌어올리기
  • 리액트 생애주기
  • 수평 스케일링
  • 리액트
  • 리액트 프로젝트 만들기
  • 서비스아키텍처
  • AWS Regions
  • useParams
  • 함수형 update
  • 리스트 조회
  • Points of Presence
  • 리액트 reducer
  • state 관리
  • react
  • 분산저장소
  • 컴포넌트트리

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
밍비

프로그램의 편린

프로그래머스

[Lv.1][python] 완주하지 못한 선수

2022. 8. 7. 18:29
728x90

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

 

프로그래머스

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

programmers.co.kr

문제는 여기서 확인할 수 있다.

def solution(participant, completion):
    answer = ''
    for i in completion:
        if i in participant:
            participant.remove(i)
            continue
    answer = participant[0]
    return answer

그냥 브루트포스로 for문을 돌렸더니 효율성 테스트에서 모두 실패가 났다...

for문을 돌리고 그 안에서 remove()를 또 사용해 O(n^2)가 된 것이다.

다시 카테고리를 봤더니 해시 문제여서 해시를 사용하기로 했다.

파이썬에서 해시는 딕셔너리로 대체 가능하다.

def solution(participant, completion):
    answer = ''
    part_dict = dict.fromkeys(participant, 0)
    for i in participant:
        part_dict[i] += 1
    for i in completion:
        part_dict[i] -= 1
    for key, val in part_dict.items():
        if val != 0:
            answer = key
    return answer

겉보기에는 for문이 3개나 있어서 더 오래걸릴 것 같아 보이지만, 실제로는 O(n)으로 위의 코드보다 더 빠르게 실행된다.

728x90

'프로그래머스' 카테고리의 다른 글

[Lv.1][python] 체육복  (0) 2022.08.08
[Lv.1][python] 같은 숫자는 싫어  (0) 2022.08.07
[Lv.1][python] 크레인 인형 뽑기 게임  (0) 2022.08.07
[Lv.1][python]신고 결과 받기  (0) 2022.08.02
오픈채팅방  (0) 2022.07.01
    밍비
    밍비

    티스토리툴바