이 영역을 누르면 첫 페이지로 이동
포렌식 & 개발 이야기 - Forensics & Development 블로그의 첫 페이지로 이동

포렌식 & 개발 이야기 - Forensics & Development

페이지 맨 위로 올라가기

[프로그래머스] 달리기 경주

포렌식 & 개발 이야기 - Forensics & Development

[프로그래머스] 달리기 경주

  • 2025.03.24 23:56
  • Programming/프로그래머스
글 작성자: pental

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

오랜만에 프로그래머스 풀이를 진행하였다..

풀이

이문제는 단순하게 덤볐다가 시간초과가 나는 문제이다..

Python 내장 함수 index는 시간 복잡도가 O(N)이기 때문에 조심해서 사용해다 한다는 점을 다시한번 생각하게 되는 문제이다.

처음에 시간 초과가 난 코드는 단순하게 index의 위치를 탐색해 SWAP 하는 코드를 짰지만 68점 밖에 얻을 수 없었다.

조금더 시간을 효율적으로 사용하기 위해서, dictionary를 통해 구현을 진행하였다.

기존과 동일하게 swap을 진행해서, O(N + M)의 시간을 사용할 수 있다.

코드

'''
# 68.8 / 100.0
# players.index(i)가 O(N)이므로 시간초과 발생
def solution(players, callings):
answer = []
for i in callings :
rank = players.index(i)
user = players[rank]
temp = players[rank - 1]
players[rank - 1] = user
players[rank] = temp
return players
'''
def solution(players, callings):
answer = {}
for index, value in enumerate(players) :
answer[value] = index
for i in callings :
index = answer[i]
previous = index - 1
previous_user = players[previous]
players[previous], players[index] = players[index], players[previous]
answer[i] = previous
answer[previous_user] = index
return players
print(solution(["mumu", "soe", "poe", "kai", "mine"],["kai", "kai", "mine", "mine"])) #["mumu", "kai", "mine", "soe", "poe"]
# kai -> mumu soe kai poe mine
# kai -> mumu kai soe poe mine
# mine -> mumu kai soe mine poe
# mine -> mumu kai mine soe poe

1천등 안에 드는것이 목표이다..

이 글은 (새창열림) 본 저작자 표시, 비영리 규칙 하에 배포할 수 있습니다. 자세한 내용은 Creative Commons 라이선스를 확인하세요.
Creative Commons
본 저작자 표시
비영리

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

프로그래머스 - 마법의 엘리베이터 (파이썬)  (0) 2025.03.29
프로그래머스 - 택배 상자 꺼내기 (파이썬)  (0) 2025.03.26
[프로그래머스/JAVA] 프로그래머스 문제 모음  (0) 2021.11.02
[프로그래머스] 행렬의 합  (0) 2020.10.12
[프로그래머스] 두 개 뽑아서 더하기  (0) 2020.10.12

댓글

댓글을 사용할 수 없습니다.

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • 프로그래머스 - 마법의 엘리베이터 (파이썬)

    프로그래머스 - 마법의 엘리베이터 (파이썬)

    2025.03.29
  • 프로그래머스 - 택배 상자 꺼내기 (파이썬)

    프로그래머스 - 택배 상자 꺼내기 (파이썬)

    2025.03.26
  • [프로그래머스/JAVA] 프로그래머스 문제 모음

    [프로그래머스/JAVA] 프로그래머스 문제 모음

    2021.11.02
  • [프로그래머스] 행렬의 합

    [프로그래머스] 행렬의 합

    2020.10.12
다른 글 더 둘러보기

정보

포렌식 & 개발 이야기 - Forensics & Development 블로그의 첫 페이지로 이동

포렌식 & 개발 이야기 - Forensics & Development

  • 포렌식 & 개발 이야기 - Forensics & Development의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록

카테고리

  • Category (456)
    • Forensics (105)
      • Magnet AXIOM (28)
      • Digital Forensics Informati.. (9)
      • Iphone Forensics (24)
      • DFC (7)
      • 디지털포렌식전문가2급 자격증 (10)
      • FTK ACE 자격증 (7)
    • 이것저것 (7)
      • Ubuntu (6)
      • 디스코드 봇 (4)
      • Volatility GUI (2)
    • CTF (32)
      • NEWSECU (14)
      • CTF-d (5)
      • Puzzel - Network Forensics (2)
      • Security Traps (2)
      • system32.kr (5)
      • HMCTF (4)
    • Programming (264)
      • C (10)
      • Python (11)
      • 백준 (210)
      • 프로그래머스 (32)
    • 그냥 개발 및 잡담 (16)
      • Docker (2)
      • Google Cloud (3)
      • OS 개발 (3)
    • Best of Best (20)

인기 글

공지사항

태그

  • axiom
  • 디지털포렌식
  • Forensics
  • 파이썬
  • 백준
  • 프로그래머스
  • pental
  • 포렌식
  • 전체 보기…

정보

pental의 포렌식 & 개발 이야기 - Forensics & Development

포렌식 & 개발 이야기 - Forensics & Development

pental

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © pental.

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.