본문 바로가기
백준 알고리즘

백준 - 18870번 죄표 합축 python 문제풀이 [Hellfer]

by Hellfer 2023. 12. 3.
728x90

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

 

18870번: 좌표 압축

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

www.acmicpc.net

🔷 알고리즘 분류 - 정렬, 값 / 좌표 압축   난이도 - 실버 2

파이썬의 딕셔너리(Dictionary)는 키-값 쌍을 원소로 가지는 자료형입니다. 

 

딕셔너리는 순서를 가지지 않으며, 키를 통해 값을 참조합니다. 

 

딕셔너리는 중괄호 {}를 사용하여 생성하며, 키와 값은 콜론 :으로 구분합니다.

예를 들어, 다음과 같이 딕셔너리를 생성할 수 있습니다.

 

dict1 = {'apple': 1, 'banana': 2, 'cherry': 3}

 

딕셔너리에서 키를 사용하여 값을 참조하는 방법은 다음과 같습니다.

 

print(dict1['apple'])  # 출력: 1

 

딕셔너리에 새로운 키-값 쌍을 추가하는 방법은 다음과 같습니다.

 

dict1['orange'] = 4
print(dict1)  # 출력: {'apple': 1, 'banana': 2, 'cherry': 3, 'orange': 4}

 

딕셔너리에서 키-값 쌍을 삭제하는 방법은 다음과 같습니다.

 

del dict1['apple']
print(dict1)  # 출력: {'banana': 2, 'cherry': 3, 'orange': 4}

 

딕셔너리의 모든 키를 가져오는 방법은 keys() 메서드를

 

모든 값을 가져오는 방법은 values() 메서드를

 

모든 키-값 쌍을 가져오는 방법은 items() 메서드를 사용합니다.

 

print(dict1.keys())  # 출력: ['banana', 'cherry', 'orange']
print(dict1.values())  # 출력: [2, 3, 4]
print(dict1.items())  # 출력: [('banana', 2), ('cherry', 3), ('orange', 4)]

 

딕셔너리는 키의 유일성을 보장하므로, 동일한 키에 대해 여러 값을 가질 수 없습니다.

🔶문제 풀이 - 딕셔너리를 이용한 풀이

# 사용자로부터 정수 n을 입력받음
n=int(input())

# 사용자로부터 n개의 정수를 입력받아 리스트 x를 생성
x=list(map(int,input().split()))

# 리스트 x에서 중복을 제거한 후 정렬하여 새 리스트 sorted_x를 생성
sorted_x=sorted(list(set(x)))

# 딕셔너리 result를 생성하여 각 숫자와 그에 해당하는 인덱스를 매핑
# 예: 만약 sorted_x가 [2, 4, 5]라면 result는 {2: 0, 4: 1, 5: 2}가 됨
result={sorted_x[i]: i for i in range(len(sorted_x))}

# 원래의 수열 x에 대해 각 숫자가 정렬된 리스트에서 몇 번째에 위치하는지 출력
# end=' ' 옵션을 사용하여 결과를 공백으로 구분
for i in x:
    print(result[i], end=' ')

🔶 문제 이해하기

# 딕셔너리 result를 생성하여 각 숫자와 그에 해당하는 인덱스를 매핑
# 예: 만약 sorted_x가 [2, 4, 5]라면 result는 {2: 0, 4: 1, 5: 2}가 됨
result={sorted_x[i]: i for i in range(len(sorted_x))}

 

예를 들어, x = [4, 2, 9, 6, 7]이라고 가정하면, sorted_x = sorted(list(set(x)))는 [2, 4, 6, 7, 9]가 됩니다. 

 

이때, result 딕셔너리는 다음과 같이 생성됩니다.

 

result = {2: 0, 4: 1, 6: 2, 7: 3, 9: 4}

 

여기서 키는 sorted_x의 요소이고, 값은 해당 요소의 인덱스입니다. 

 

이렇게 생성한 딕셔너리를 사용하면, sorted_x의 요소가 원래 몇 번째에 위치했는지 쉽게 찾을 수 있습니다.

 

딕셔너리를 사용하여 푸는 좋은 문제라고 생각합니다!

 

🤗파이팅입니다~ 여러분!!🤗

728x90