목록전체 글 (315)
rueki
1번, 2번, 3번 학생 모두 찍는 패턴이 고유한데 찍는 패턴의 최대 길이가 다 다르다. 최대 10000문제까지 있다고 하는데 이를 전부 사용하는 것은 메모리 상 문제가 있을 것이다. 그래서 최소한의 패턴을 가지고 정답과 비교하기 위해서 정답 인덱스와 나머지연산을 통해서 반복하게 된다. -예로 10번 문제에 대해서 비교하려 하는데 1번학생은 10 % 5 = 5, 2번학생은 10 % 8 = 2, 3번학생은 10 % 10 =0 의 패턴 순서에 있는 답과 비교를 하면 된다. - 정답 개수 비교하여 카운트 세주기 - 최대로 맞은 사람 개수와 비교해서 같은 값을 가지는 학생의 경우 최종 출력 def solution(answers): fs = [1, 2, 3, 4, 5] ss = [2,1,2,3,2,4,2,5] t..
생각보다 시간 초과때문에 골머리를 많이 앓은 문제... 왜 인덱스랑 우선순위 요소랑 바꾸기만 했다고 시간 초과가 안뜨는지 궁금한 부분인데 의심되는건 뒤에서 비교할 때 각 요소의 0, 1 인덱스 접근때문인거 같기도 하고.. - Queue에서 뽑아낸 첫 위치의 원소의 우선순위가 Queue에 남아있는 것들의 최대 우선순위보다 낮으면 일단 뒤로 보낸다. - 최대 우선순위의 원소를 만나게 되면 이것이 첫 프린터 순서이기때문에 + 1 을 해주고 Queue에서 아예 제거 - 찾고자 하는 위치랑도 일치하면 멈추면 되고 아니면 이미 우선순위는 다른 것들보다 앞이기 때문에 제거 from collections import deque def solution(priorities, location): # (우선순위, idx) q..
- 좌괄호만 스택에 넣고 우괄호가 나오게 된다면 스택에 꺼내서 쌍을 맞춘다. - 다 끝나고도 스택에 존재한다면 괄호쌍이 맞춰지지 않은 것이기에 False - ")" 이지만 스택에 존재하지 않으면 이것도 False def solution(s): answer = True left_galho = [] for g in s: if g == "(": left_galho.append(g) #좌괄호가 스택 내에 1개라도 존재해야 쌍이 맞춰짐 elif g == ")" and len(left_galho) > 0: left_galho.pop() else: answer = False if len(left_galho) > 0: answer = False return answer
https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 입력 숫자가 0이 아닌 경우에 우선순위 큐에 입력하고 0이 되면 출력하는 구조이다. 대신 절대값이 작은것을 출력하기에 단순하게 우선순위를 정하면 잘못된 출력을 내보내게 된다. 그래서 우선순위 큐에 절대값과 원래 입력값을 같이 입력받는다. 이렇게 되면 절대값 기준으로 정렬을 하게 되며 같은 경우에 원래 값 순서대로 나열되게 된다. import sys from queue impo..
https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net - 첫 카드 버리기 - 두번째 카드는 맨 뒤로 - 마지막 남을 때까지 반복 배열 양쪽끝을 자유자재로 넣고 빼고 하는 것은 Queue 사용하는 것이 편하다. from collections import deque n=int(input()) card = [i for i in range(1, n+ 1)] q = deque(card) while len(q) > 1: first_del_card = q.pop..
https://www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 이번 문제는 스택을 이용하면 풀기 쉽다. 예제 1번에서 3, 5, 2 ,7의 수열로 예시를 들어보자. 처음의 경우에는 비교할 대상이 없기때문에 스택에 숫자의 인덱스를 넣자 - 스택 : [0, ] 그 다음은 이제 5인데(현재 인덱스는 1) 스택 인덱스에 해당되는 배열 수의 값이 현재 숫자보다 크면 결과 리스트에 집어 넣는다. (오른쪽에 있는 큰 수들 중에서 가장 왼쪽을 고르는 문제이기때문) - 결과 리스트 :..
- 파이썬 def solution(people, limit): answer = 0 people.sort() s, e = 0, len(people) - 1 while s
- 파이썬 def solution(s): answer = True s = s.lower() sc = s.count('p') pc = s.count('y') if sc == pc: answer = True else: answer = False return answer - C++ #include #include using namespace std; bool solution(string s) { bool answer = true; int pc = 0; int yc = 0; for(int i=0;i < s.size();i++) { if(s[i] == 'p' || s[i] == 'P') { pc ++; } else if(s[i] == 'y' || s[i] == 'Y') { yc ++; } } if(pc != yc..