languages/coding test
-
단계별로 풀어보기 > 단계 13: 정렬 > 18870번 #18870: 좌표 압축 n = int(input()) lst = list(map(int,input().split())) sortedlst = sorted(list(set(lst))) dict = dict(zip(sortedlst,list(range(len(sortedlst))))) for i in lst: print(dict[i], end=' ') 이전처럼 리스트 두 개를 사용하면 시간 초과로 실패합니다. set-list 작업으로 중복을 제거하고, 딕셔너리 형식으로 자료 형태를 바꿔줍니다.
[백준/Python] 18870번: 좌표 압축단계별로 풀어보기 > 단계 13: 정렬 > 18870번 #18870: 좌표 압축 n = int(input()) lst = list(map(int,input().split())) sortedlst = sorted(list(set(lst))) dict = dict(zip(sortedlst,list(range(len(sortedlst))))) for i in lst: print(dict[i], end=' ') 이전처럼 리스트 두 개를 사용하면 시간 초과로 실패합니다. set-list 작업으로 중복을 제거하고, 딕셔너리 형식으로 자료 형태를 바꿔줍니다.
2024.03.22 -
단계별로 풀어보기 > 단계 13: 정렬 > 10814번 #10814: 나이순 정렬 n = int(input()) lst = [] for i in range(n): [a, b] = map(str,input().split()) lst.append([int(a), b]) lst.sort(key=lambda x: (x[0])) for i in range(n): for j in range(2): print(lst[i][j], end=' ') print() list에 저장 시 두 개를 문자열로 받고, 나이만 숫자로 변환하여 저장합니다. 리스트의 첫 번째 원소(나이)를 기준으로 정렬하면 이름에 대해서는 입력 순서로 정렬됩니다.
[백준/Python] 10814번: 나이순 정렬단계별로 풀어보기 > 단계 13: 정렬 > 10814번 #10814: 나이순 정렬 n = int(input()) lst = [] for i in range(n): [a, b] = map(str,input().split()) lst.append([int(a), b]) lst.sort(key=lambda x: (x[0])) for i in range(n): for j in range(2): print(lst[i][j], end=' ') print() list에 저장 시 두 개를 문자열로 받고, 나이만 숫자로 변환하여 저장합니다. 리스트의 첫 번째 원소(나이)를 기준으로 정렬하면 이름에 대해서는 입력 순서로 정렬됩니다.
2024.03.21 -
단계별로 풀어보기 > 단계 13: 정렬 > 1181번 #1181: 단어 정렬 n = int(input()) letters = [] for i in range(n): letters.append(input()) lset = set(letters) letterset = list(lset) letterset.sort() letterset.sort(key=len) for i in letterset: print(i) set 함수를 이용하여 중복을 제거해준 뒤 list 함수를 이용해 집합을 다시 리스트로 바꿔줍니다. 기본 sort()를 먼저 사용하고 나서 단어 글자수 정렬인 sort(key=len)을 사용해야 글자 길이순-알파벳순으로 정렬됩니다.
[백준/Python] 1181번: 수 정렬하기단계별로 풀어보기 > 단계 13: 정렬 > 1181번 #1181: 단어 정렬 n = int(input()) letters = [] for i in range(n): letters.append(input()) lset = set(letters) letterset = list(lset) letterset.sort() letterset.sort(key=len) for i in letterset: print(i) set 함수를 이용하여 중복을 제거해준 뒤 list 함수를 이용해 집합을 다시 리스트로 바꿔줍니다. 기본 sort()를 먼저 사용하고 나서 단어 글자수 정렬인 sort(key=len)을 사용해야 글자 길이순-알파벳순으로 정렬됩니다.
2024.03.21 -
단계별로 풀어보기 > 단계 13: 정렬 > 11651번 #11651: 좌표 정렬하기 2 n = int(input()) point = [] for i in range(n): [a, b] = map(int,input().split()) point.append([b,a]) point.sort() for i in range(n): print(point[i][1], point[i][0]) 11650번과 유사한 코드를 사용합니다. x, y 좌표를 y, x순서로 저장한 뒤 정렬하고, 출력할 때 반대로 출력하면 됩니다.
[백준/Python] 11651번: 좌표 정렬하기 2단계별로 풀어보기 > 단계 13: 정렬 > 11651번 #11651: 좌표 정렬하기 2 n = int(input()) point = [] for i in range(n): [a, b] = map(int,input().split()) point.append([b,a]) point.sort() for i in range(n): print(point[i][1], point[i][0]) 11650번과 유사한 코드를 사용합니다. x, y 좌표를 y, x순서로 저장한 뒤 정렬하고, 출력할 때 반대로 출력하면 됩니다.
2024.03.19 -
단계별로 풀어보기 > 단계 13: 정렬 > 11650번 #11650: 좌표 정렬하기 n = int(input()) point = [] for i in range(n): [a, b] = map(int,input().split()) point.append([a,b]) point.sort() for i in range(n): for j in range(2): print(point[i][j], end=' ') print() 리스트는 중첩이 가능합니다. (x, y)를 하나의 리스트로 생성하여 전체 리스트인 point에 추가합니다. 이후 sort 메서드를 이용하여 리스트를 정렬한 뒤, x 좌표가 작은 것부터 순서대로 출력해주면 됩니다.
[백준/Python] 11650번: 좌표 정렬하기단계별로 풀어보기 > 단계 13: 정렬 > 11650번 #11650: 좌표 정렬하기 n = int(input()) point = [] for i in range(n): [a, b] = map(int,input().split()) point.append([a,b]) point.sort() for i in range(n): for j in range(2): print(point[i][j], end=' ') print() 리스트는 중첩이 가능합니다. (x, y)를 하나의 리스트로 생성하여 전체 리스트인 point에 추가합니다. 이후 sort 메서드를 이용하여 리스트를 정렬한 뒤, x 좌표가 작은 것부터 순서대로 출력해주면 됩니다.
2024.03.18 -
단계별로 풀어보기 > 단계 13: 정렬 > 1427번 #1427: 소트인사이드 n = input() arr = [] for i in str(n): arr.append(int(i)) arr.sort(reverse=True) for i in arr: print(i, end='') 역정렬 메서드는 sort(reverse=True)를 사용합니다. 출력 시 공백이 없어야 하므로 end=''도 붙여줍니다.
[백준/Python] 1427번: 소트인사이드단계별로 풀어보기 > 단계 13: 정렬 > 1427번 #1427: 소트인사이드 n = input() arr = [] for i in str(n): arr.append(int(i)) arr.sort(reverse=True) for i in arr: print(i, end='') 역정렬 메서드는 sort(reverse=True)를 사용합니다. 출력 시 공백이 없어야 하므로 end=''도 붙여줍니다.
2024.03.16 -
단계별로 풀어보기 > 단계 13: 정렬 > 10989번 #10989: 수 정렬하기 3 import sys n = int(sys.stdin.readline()) arr = [0] * 10001 for i in range(n): num = int(sys.stdin.readline()) arr[num] += 1 for i in range(10001): if arr[i] != 0: for j in range(arr[i]): print(i) 이 문제는 2751번과 달리 sort와 input을 쓰면 메모리 초과로 무조건 실패하게 됩니다. sys 를 import하고, 입력값이 10000개까지 주어질 수 있으나 인덱스의 편의를 위해 크기가 10001인 리스트를 생성합니다. 각 항목에 0을 먼저 할당하고, 0보다 큰 요..
[백준/Python] 10989번: 수 정렬하기 3단계별로 풀어보기 > 단계 13: 정렬 > 10989번 #10989: 수 정렬하기 3 import sys n = int(sys.stdin.readline()) arr = [0] * 10001 for i in range(n): num = int(sys.stdin.readline()) arr[num] += 1 for i in range(10001): if arr[i] != 0: for j in range(arr[i]): print(i) 이 문제는 2751번과 달리 sort와 input을 쓰면 메모리 초과로 무조건 실패하게 됩니다. sys 를 import하고, 입력값이 10000개까지 주어질 수 있으나 인덱스의 편의를 위해 크기가 10001인 리스트를 생성합니다. 각 항목에 0을 먼저 할당하고, 0보다 큰 요..
2024.03.15 -
단계별로 풀어보기 > 단계 13: 정렬 > 2751번 #2751: 수 정렬하기 2 import sys n = int(input()) num = [] for i in range(n): num.append(int(sys.stdin.readline())) num.sort() for i in range(n): print(num[i]) 2750번과 동일한 문제이나 수의 범위가 늘어나서 코드를 그대로 쓰면 시간 초과로 실패합니다. import sys를 해 주고, 입력을 sys.stdin.readline()으로 받으면 시간 초과 문제를 해결할 수 있습니다.
[백준/Python] 2751번: 수 정렬하기 2단계별로 풀어보기 > 단계 13: 정렬 > 2751번 #2751: 수 정렬하기 2 import sys n = int(input()) num = [] for i in range(n): num.append(int(sys.stdin.readline())) num.sort() for i in range(n): print(num[i]) 2750번과 동일한 문제이나 수의 범위가 늘어나서 코드를 그대로 쓰면 시간 초과로 실패합니다. import sys를 해 주고, 입력을 sys.stdin.readline()으로 받으면 시간 초과 문제를 해결할 수 있습니다.
2024.03.14