[백준][파이썬] 18870번 좌표압축

2022. 2. 14. 11:00·Python/알고리즘 문제풀이

백준 온라인저지 18870번 좌표압축

문제풀러 바로가기👇👇👇👇👇👇

https://www.acmicpc.net/problem/18870

 

18870번: 좌표 압축

수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌

www.acmicpc.net

 

 

 

문제풀이


시간 복잡도가 굉장히 중요한 문제이다.

근본적인 알고리즘은 쉬운 편이다. 중복되지 않은 배열을 정렬해 그 인덱스를 가져오면 된다.

만약 여기서 리스트에서 인덱스를 가져오는 index()메소드를 사용하면 시간복잡도가 O(N)이다. 그런데 문제에서 N의 범위는 무려 1 ≤ N ≤ 1,000,000 이기 때문에 하나의 인덱스를 구할 때 최악의 경우엔 1,000,000회의 동작을 수행해야한다. 당연히 시간초과가 발생할 것이다.

 

반면 딕셔너리를 사용하면 어떻게 될까?

딕셔너리를 사용하면  O(1)이다. 키를 입력하면 index()메소드처럼 따로 찾을 필요없이 바로 value를 돌려받을 수 있다.

따라서 이 문제에선 딕셔너리를 사용해야한다.

 

 

코드

 

- 시간초과된 풀이

n = int(input())
pos = list(map(int, input().split()))
zipped = sorted(list(set(pos)))


for i in pos:
    print(zipped.index(i), end=" ")

 

- 성공한 풀이

n = int(input())
pos = list(map(int, input().split()))
zipped = sorted(list(set(pos)))

dic = {zipped[i] : i for i in range(len(zipped))}

for i in pos:
    print(dic[i], end=" ")

 

 

 

'Python/알고리즘 문제풀이' 카테고리의 다른 글
  • [파이썬][백준] 2156번 포도주 시식
  • [백준][파이썬] 10816번 숫자 카드 2
  • [백준][파이썬] 7576번 토마토
  • [백준][파이썬] 9184번 신나는 함수 실행
gakko
gakko
좌충우돌 개발기
  • gakko
    MYVELOP 마이벨롭
    gakko
  • 전체
    오늘
    어제
    • 분류 전체보기 (203)
      • Spring (23)
        • Spring (10)
        • Spring Boot (7)
        • Spring Security (1)
        • Hibernate (4)
      • Test (3)
      • 끄적끄적 (6)
      • 활동 (35)
        • 부스트캠프 (23)
        • 동아리 (3)
        • 컨퍼런스 (3)
        • 글또 (5)
        • 오픈소스 컨트리뷰션 (1)
      • 디자인패턴 (0)
      • Git & GitHub (22)
        • Git (13)
        • Github Actions (1)
        • 오류해결 (5)
        • 기타(마크다운 등) (3)
      • 리눅스 (6)
        • 기초 (6)
        • 리눅스 서버 구축하기 (0)
      • Infra (2)
        • Docker (1)
        • Elastic Search (0)
        • Jenkins (1)
        • AWS (1)
      • MySQL (7)
        • 기초 (6)
        • Real MySQL (1)
      • 후기 (3)
        • Udemy 리뷰 (3)
      • CS (26)
        • 웹 기본지식 (0)
        • 자료구조 (13)
        • 운영체제 OS (12)
        • 데이터베이스 (1)
        • 시스템 프로그래밍 (0)
        • 기타 (0)
      • Tools (1)
        • 이클립스 (1)
        • IntelliJ (0)
      • 프로젝트 (1)
        • 모여모여(부스트캠프) (1)
      • JAVA (32)
        • Maven (6)
        • 오류해결 (11)
        • 자바 클래스&메소드 (1)
        • JSP & Servlet (12)
      • Javascript (5)
        • 기초 (3)
        • React (2)
      • Python (28)
        • 파이썬 함수 (9)
        • 알고리즘 문제풀이 (16)
        • 데이터 사이언스 (2)
        • 웹 크롤링 (1)
      • 단순정보전달글 저장소 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 우진님
  • 공지사항

  • 인기 글

  • 태그

    Python
    오류해결
    부스트캠프
    파이썬
    Spring
    MySQL
    운영체제
    스프링
    알고리즘
    java
    os
    자바스크립트
    자바
    Git
    스프링부트
    GitHub
    jsp
    부스트캠프 멤버십
    웹개발
    부스트캠프 7기
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
gakko
[백준][파이썬] 18870번 좌표압축
상단으로

티스토리툴바