ETC/Algorithm(58)
-
백준, 외계인의 기타 연주, 2841
[유형]자료구조, stack [문제링크]https://www.acmicpc.net/problem/2841 [요약]손가락을 수십억개 갖고 있는 외계인이 기타를 치려고 한다.기타는 6개의 줄이 있고, 각각의 줄은 P개의 플랫으로 나뉘어진다.프렛을 누른 상태로 줄을 튕기면 음을 연주할 수 있는데, 어떤 줄의 프렛을 여러 개 누르고 있다면 가장 높은 음이 들린다.손가락으로 프렛을 누르거나 떼는 것을 한번 움직였다고 할 때, 횟수를 최소화하는 방법을 구하는 프로그램을 작성하시오. [문제풀이]1. 빈 리스트 안에 7개의 리스트를 생성한다. 2. 스택이 비어있다면, 스택에 append를 해주고 ans+13. 스택이 비어있지않고, 스택의 마지막 값이 b보다 크다면, 스택의 마지막 값 pop, ans+14. 스택이 비어..
2024.08.19 -
백준, AC, 5430
[유형]자료구조, deque [문제링크]https://www.acmicpc.net/problem/5430 [요약]두 가지 함수 R(뒤집기)과 D(버리기)가 있다.함수 R은 배열에 있는 수의 순서를 뒤집는 함수이고, D는 첫 번째 수를 버리는 함수이다. 배열이 비어있는데 D를 사용한 경우에는 에러가 발생한다. 배열의 초기값과 수행할 함수가 주어졌을 때, 최종 결과를 구하는 프로그램을 작성하시오. [문제풀이]"R"이 나올 때마다 뒤집는게 아니라 뒤집는 횟수를 기억해두고, 홀수일 때에만 뒤집어준다.flag를 사용하여 1인 경우에는, 에러 메시지를 출력한다."D"가 나올 때, 뒤집는 횟수가 홀수일 경우 pop(), 뒤집는 횟수가 짝수일 경우 popleft()를 사용한다.import sysfrom collecti..
2024.08.14 -
백준, 제로, 10773
[유형]자료구조, 스택 [문제링크]https://www.acmicpc.net/problem/10773 [요약]데이터를 입력받다가, 중간에 잘못된 데이터가 들어오면 0이 들어온다.0이 들어오면 잘못된 데이터가 들어온 것이므로, 값을 삭제한다.이후 남아있는 값들의 합을 구한다. [문제 풀이]FILO구조를 띄고 있는 자료구조로, 삽입과 삭제 연산이 동일한 곳에서 발생한다.스택을 사용한다. import sysdef input(): return sys.stdin.readline().rstrip()stack = []N = int(input())for _ in range(N): nn = int(input()) if nn == 0: stack.pop() else: stac..
2024.08.13 -
백준, 카드2, 2164
[유형]자료구조, 큐 [문제링크]https://www.acmicpc.net/problem/2164 [요약]N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여있다.카드가 한 장 남을 때까지 다음 동작을 반복한다. 제일 위에 있는 카드를 바닥에 버린다. 다음 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다.N이 주어졌을 때, 제일 마지막에 남게 되는 카드를 구하는 프로그램을 작성하시오.[제약조건]N(1 ≤ N ≤ 500,000) [문제풀이]N=4인 경우,1234 => 234 => 342 => 42 => 24 => 4 순서대로 처리해야하는 일을 수행할 때.처리 과정에서 데이터를 제거해야하는데,..
2024.08.12