문제
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석
국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.
www.codetree.ai
실행 결과
코드(Python)
class Point:
def __init__(self, x, idx):
self.x = int(x)
self.idx = int(idx)
n = int(input())
points = []
# 한 줄로 x값 입력 받기
x_values = tuple(map(int, input().split()))
# 각 point 객체를 points에 추가
for i in range(1, n + 1):
points.append(Point(x_values[i - 1], i))
# x 값 기준으로 오름차순 정렬
points.sort(key=lambda p: p.x)
sorted_x_values = [0] * n
for idx, point in enumerate(points):
# 원 배열 인덱스에 새로운 배열 인덱스를 매핑
sorted_x_values[point.idx - 1] = idx + 1
for point in sorted_x_values:
print(point, end=" ")
코드 설명
enumerate 함수를 사용해 어느 위치로 이동하는지를 다시 매핑하는 것이 핵심이다.
point.idx - 1(원래 index) => idx+1(정렬된 index)
enumerate 함수란?반복문에서 각 원소와 동시에 몇 번째 반복문인지 해당 index를 확인하기 위해 사용한다.
indx와 컬렉션의 element를 tuple 형태로 반환한다.
'PS' 카테고리의 다른 글
[코드트리] Notation / 진수 to 진수 (0) | 2024.06.21 |
---|---|
[코드트리] Date to Date (0) | 2024.06.20 |
코드트리: a/b 출력 응용 (0) | 2024.06.15 |
코드트리: 오름차순과 내림차순 정렬 (0) | 2024.05.31 |
코드트리: 큰 숫자 자리수의 합 (0) | 2024.05.28 |