[정수론] GCD(n, k)=1 (백준 11689)
·
Baekjoon
문제는 단순하다. 오일러 피함수를 구현해서 n일때의 값을 찾는 것이다.  기존의 오일러 피함수 구하는 방법은 1) 구하고자 하는 오일러 피의 범위만큼 자기 자신 인덱스로 초기화 (list(range(N+1))2) 2부터 시작해서 현재 배열의 값 == 인덱스 (소수일때) 현재 선택된 숫자(K)의 배수에 해당하는 수를 배열 끝까지 탐색해서 P[i] = P[i] - P[i]//K 연산 수행3) 배열 끝까지 2) 과정 반복 코드로 구현해보면,n = int(input())array = list(range(n+1))for i in range(2, n+1): if i == array[i]: for j in range(1, int(n//i)+1): array[i*j] = array..
[버블 정렬] 버블 소트 (백준 1377)
·
Baekjoon
문제는 C++언어로 작성되었지만 해석해보면 버블정렬 할 때 이중 for문을 돌게 되는데 안쪽 for문에서 순서 변화가 안생기는 루프가 몇번 째인지 출력하는 문제다. 즉, 몇 번 for문을 돌면 제대로 정렬이 되는 건지 묻는 문제다.  풀이 과정을 봤는데 두 가지가 잘 이해가 안됐다.  (1) 왜 index의 차이의 최대값으로 몇 번 돌았는지를 알 수 있는가(2) 왜 (sort 전 index) - (sort 후 index) 가 되어야 하는 가  (소스코드) import sysinput = sys.stdin.readlineN = int(input())A = list(enumerate([int(input()) for _ in range(N)]))sorted_A = sorted(A, key=lambda x:x[..
[DP] 포도주 시식 (백준 2156)
·
Baekjoon
(문제)​효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규칙이 있다.​포도주 잔을 선택하면 그 잔에 들어있는 포도주는 모두 마셔야 하고, 마신 후에는 원래 위치에 다시 놓아야 한다.연속으로 놓여 있는 3잔을 모두 마실 수는 없다.​효주는 될 수 있는 대로 많은 양의 포도주를 맛보기 위해서 어떤 포도주 잔을 선택해야 할지 고민하고 있다. 1부터 n까지의 번호가 붙어 있는 n개의 포도주 잔이 순서대로 테이블 위에 놓여 있고, 각 포도주 잔에 들어있는 포도주의 양이 주어졌을 때, 효주를 도와 가장 많은 양의 포도주를 마실 수 있도록 하는 프로그램을 작성하시오. 예를 들어..
[스택, 큐] 오큰수 구하기 (백준 17298)
·
Baekjoon
import sysinput = sys.stdin.readlinefrom collections import dequeN = int(input())array = list(map(int, input().split()))answer = [-1]*(N)mystack = deque([]) # index 담기for i in range(N): while mystack and array[mystack[-1]]
[슬라이딩 윈도우] 최솟값 찾기 (백준 11003)
·
Baekjoon
from collections import dequeimport sysinput = sys.stdin.readlinen, l = map(int, input().split())mydeque = deque()now = list(map(int, input().split()))for i in range(n): while mydeque and mydeque[-1][0] > now[i]: mydeque.pop() mydeque.append((now[i], i)) if mydeque[0][1]
sweetpotato7
'Baekjoon' 카테고리의 글 목록