✅문제 ✅풀이 - (시간 초과)import syssys.stdin.readline()num_list = list(map(int,sys.stdin.readline().rstrip().split()))rank = sorted(set(num_list))for i in num_list: print(rank.index(i),end=" ") 해설입력 받은 수를 set()를 통해 중복을 제거하고 정렬하여 for 문을 통해 index를 찾아 출력하였다. ❗❗❗시간 초과 발생 이유 ( .index() method ) 마지막 출력문에서 num_list 를 탐색하며 index(method)를 사용하는데.index() method는 리스트를 순회하며 값을 찾으므로 시간 복잡도가 O(N)이 된다.👎.index() me..
문제 ✅중요 개념계수 정렬 ( Counting Sort ) 계수 정렬이란 sort 메소드를 이용하는 것이 아니라 정렬하려는 List의 값 중 가장 큰 값을 List의 size + 1을 크기로 가지는 List를 생성하여 index를 정렬하는 숫자의 해당 숫자로 사용하여 Sorting을 하는 방법을 말한다.👍자세한 내용은 링크를 참고해 주세요 -- https://www.programiz.com/dsa/counting-sort Counting Sort (With Code in Python/C++/Java/C)Counting Sort Algorithm In this tutorial, you will learn about the counting sort algorithm and its implement..
처음 코드 ( 실행시간 1120ms) import sys# 소수 리스트 생성 함수def prime(n): sieve = [True] * (n+1) for i in range(3,int(n**.5)+1,2): if sieve[i]: sieve[i*i::2*i] = [False]*len(sieve[i*i::2*i]) return [2]+[i for i in range(3,n+1,2) if sieve[i]]# 파티션 구하는 함수def getPartition(prime:list,n:int)->str: left, right = 0, len(prime)-1 partition = "" while left n: right -= 1 ..
중요 개념1. 소수 탐색2. 이분탐색법 소스코드import sysdef prime(n): sieve = [True] * (n+1) for i in range(3,int(n**.5)+1,2): if sieve[i]: sieve[i*i::2*i] = [False]*len(sieve[i*i::2*i]) return [2] + [i for i in range(3,n+1,2) if sieve[i]]def Search(prime, n): l,r = 0, len(prime)-1 while l n: r = m-1 else: l = m+1 return lprimeList = prime(123456*2)wh..
첫 코드class Solution { public int[] solution(int[][] score) { int[] answer = new int[score.length]; Integer[] sorted = new Integer[score.length]; List average = new ArrayList(); int before = -1; int before_index = -1; for (int i = 0 ; i 등수를 저장하는 int[] answer평균을 저장하는 List average평균을 저장하고 순서대로 정렬하는 int[] sorted sorted[] 를 정렬한 후에 그 값을 average에 찾아서 그 index를..