[Python] 백준 1015번: 수열 정렬

SeungHyun·2023년 10월 1일

coding test

목록 보기
8/16

0. 기본 정보

0-A. 개요

python/백준 - 1015번 문제에 대한 분석임.

0-B. 문제 정보

백준 - 1015번: 수열 정렬


1. 정답 코드

import sys
input = sys.stdin.readline


n = int(input())
l = list(map(int, input().split()))

l_sort = sorted(l[:])


temp = []
for i in l:
    temp.append(i)
    answer = l_sort.index(i)+temp.count(i)-1
    print(answer, end=' ')

2. 핵심풀이

  1. 정렬된 수열 list를 하나 만들어서 index를 출력하면 되겠지만 중복 원소에 대해서는 처리가 불가능하다. 그렇다면 새로운 list를 생성하고 거기에 수열의 원소를 하나씩 집어넣고
    '정렬된 수열 list의 index + 새로운 list 내 중복 원소에 대한 갯수'를 출력하여 문제를 해결하면 되겠다.
    말로 설명하니 좀 애매한데 코드를 보면 직관적으로 알거다. 어렵게 생각하지 말자

2-a. 코드 분석

n = int(input())
l = list(map(int, input().split()))

l_sort = sorted(l[:])
  • 수열의 길이와 수열을 입력 받는 코드
  • 입력 받은 수열을 정렬하여 새로운 변수에 초기화함. (원본 수열의 index를 출력하기 위함.)

temp = []
for i in l:
    temp.append(i)
    answer = l_sort.index(i)+temp.count(i)-1
    print(answer, end=' ')
  • temp = []: 새로운 list 선언. 여기에 수열의 원소를 하나씩 넣을 예정이다.
  • for문으로 원본 수열인 list l의 원소를 하나씩 꺼내온다.
  • temp.append(i): for문으로 꺼내온 l의 원소를 temp list에 집어 넣는다.
  • answer = l_sort.index(i)+temp.count(i)-1
    • l_sort.index(i): 수열이 정렬된 list인 l_sort list의 원소 i index
    • temp.count(i)-1: temp list에 원소 i가 몇개인지 count한다. 이때 answer 변수에 값을 할당하기 전 이미 temp list에는 원소 i가 하나는 반드시 들어가기 때문에 -1을 해준다.
profile
어디로 가야하오

0개의 댓글