diff --git "a/[W2]\354\240\225\353\240\254_\354\235\264\354\247\204\355\203\220\354\203\211/pine/[\354\235\264\354\247\204\355\203\220\354\203\211]K\353\262\210\354\247\270\354\210\230_1300_1.py" "b/[W2]\354\240\225\353\240\254_\354\235\264\354\247\204\355\203\220\354\203\211/pine/[\354\235\264\354\247\204\355\203\220\354\203\211]K\353\262\210\354\247\270\354\210\230_1300_1.py" new file mode 100644 index 0000000..66a065a --- /dev/null +++ "b/[W2]\354\240\225\353\240\254_\354\235\264\354\247\204\355\203\220\354\203\211/pine/[\354\235\264\354\247\204\355\203\220\354\203\211]K\353\262\210\354\247\270\354\210\230_1300_1.py" @@ -0,0 +1,15 @@ +''' +문제 풀이 1 +1. 입력받은 N을 이용해서 배열 B를 제작한다. +1.1 1-N까지의 값을 반복문을 이용해 제작. +2. B를 오름차순 정렬한다. +3. B[k]를 구한다. -> 어차피 배열이니까 Index값으로 뽑으면 되는데 왜 이진 탐색인거지? + +결과: 메모리초과 +''' + +n = int(input()) +k = int(input()) + +b=sorted([i*j for i in range(1,n+1) for j in range(1,n+1)]) +print(b[k]) diff --git "a/[W2]\354\240\225\353\240\254_\354\235\264\354\247\204\355\203\220\354\203\211/pine/[\354\235\264\354\247\204\355\203\220\354\203\211]K\353\262\210\354\247\270\354\210\230_1300_2.py" "b/[W2]\354\240\225\353\240\254_\354\235\264\354\247\204\355\203\220\354\203\211/pine/[\354\235\264\354\247\204\355\203\220\354\203\211]K\353\262\210\354\247\270\354\210\230_1300_2.py" new file mode 100644 index 0000000..8b8ca78 --- /dev/null +++ "b/[W2]\354\240\225\353\240\254_\354\235\264\354\247\204\355\203\220\354\203\211/pine/[\354\235\264\354\247\204\355\203\220\354\203\211]K\353\262\210\354\247\270\354\210\230_1300_2.py" @@ -0,0 +1,30 @@ +''' +문제 풀이 2 +1. 숫자의 개수 = N*N +2. (숫자의 개수)/2 와 K를 비교해 배열의 크기를 절반으로 축소 +2.1 K가 클 경우 배열 = (1 ~ N) * ((N/2)+1 ~ N) +2.2 K가 작을 경우 배열 = (1 ~ N) * ((1~(N/2+나머지)) +3. 남은 숫자의 개수 = ((N/2)+1) * N개 +4. 반복하며 범위 축소 +4.1 언제까지? 시작인덱스와 종료인덱스가 같을때까지 + +결과: 값이 정렬되지 않은 상태여서 정렬된 값을 구할 수 없음 +''' +import math + +n = int(input()) +k = int(input()) + +startIndex = 1 +endIndex = n +number= n*n # 숫자의 개수 + +while startIndex != endIndex: + isAboveMid = (number/2)<=k #16 + if isAboveMid: startIndex += math.ceil((endIndex-startIndex)/2) + else: endIndex = sum(divmod(endIndex, 2)) # K가 같거나 작을 경우의 배열 + number = (endIndex-startIndex+1)*n + +b = [i*j for i in range(1,n+1) for j in range(startIndex,endIndex+1)] +index = k-(n*n-n) # (endIndex-1) = 현재 선택된 행 이전의 행 -> *n을 하여 앞의 숫자 개수를 계산해서 k에서 빼준다. +print(b[index]) diff --git "a/[W2]\354\240\225\353\240\254_\354\235\264\354\247\204\355\203\220\354\203\211/pine/[\354\240\225\353\240\254]\355\232\214\354\235\230\354\213\244\353\260\260\354\240\225_1931.py" "b/[W2]\354\240\225\353\240\254_\354\235\264\354\247\204\355\203\220\354\203\211/pine/[\354\240\225\353\240\254]\355\232\214\354\235\230\354\213\244\353\260\260\354\240\225_1931.py" new file mode 100644 index 0000000..ad05990 --- /dev/null +++ "b/[W2]\354\240\225\353\240\254_\354\235\264\354\247\204\355\203\220\354\203\211/pine/[\354\240\225\353\240\254]\355\232\214\354\235\230\354\213\244\353\260\260\354\240\225_1931.py" @@ -0,0 +1,23 @@ +''' +풀이 방식 +1. 종료시간으로 정렬 +1.1 종료시간으로만 정렬했다가 실패. -> 1순위는 종료시간, 2순위는 시작시간으로 정렬해줘야했음 +2. 예약 배열에 예약된 시간을 넣어줌 +3. 이때, 신청 시작시간이 최근 예약된 시간의 종료시간 이후일 경우 예약 확정 +---------- +예제 입력1(1.1에 해당하는 예시) +5 +3 3 +1 2 +2 3 +3 4 +4 5 +''' +n = int(input()) +schedule = sorted([list(map(int, input().split())) for _ in range(n)],key=lambda time: (time[1],time[0])) +print(schedule) +reservation=[schedule[0]] +for time in schedule[1:]: + if time[0]>=reservation[-1][1]:reservation.append(time) + +print(len(reservation)) \ No newline at end of file