목록소프트웨어/코딩테스트 (8)
julia coding story
[TRY 1] 5%에서 틀렸다 나옴 -> 아직도 왜 인지 몰라서 clude한테 물어봄from collections import dequeimport sysdef dfs(v, connection, visited): visited[v] = True print(v, end = ' ') con = [] for i in range(M): # print(connection[i][0], end = " ") # print(visited[connection[i][0]]) # print(v, end = "/ ") # print( connection[i][1], end = " ") # print(visited[connection[i]..
백준 1966번 - 프린터 큐 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net ▶ 문제 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 쌓여서 FIFO - First In First Out - 에 따라 인쇄가 되게 된다. 하지만 상근이는 새로운 프린터기 내부 소프트웨어를 개발하였는데, 이 프린터기는 다음과 같은 조건에 따라 인쇄를 하게 된다. 현재 Queue의 가장 앞에 ..

백준 18566번 - 요세푸스 문제 0 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net ▶문제 요세푸스 문제는 다음과 같다. 1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요세푸스 순열이라고 한다. 예를 들어 (7, 3)-요세푸스 순열은 이다. N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는 프로그램을 작성하시오. ▶입력 첫째..

백준 15828번 15828번: Router 인터넷을 사용하기 위해서는 컴퓨터에 인터넷 회선을 연결하거나 Wi-Fi를 연결해야 한다. 이렇게 연결된 네트워크를 통해 컴퓨터에는 통신이 가능하다. 마음에 드는 노래나 동영상이 있는 곳에 www.acmicpc.net ▶문제 인터넷을 사용하기 위해서는 컴퓨터에 인터넷 회선을 연결하거나 Wi-Fi를 연결해야 한다. 이렇게 연결된 네트워크를 통해 컴퓨터에는 통신이 가능하다. 마음에 드는 노래나 동영상이 있는 곳에 파일을 전송해달라는 요청을 보내고 파일을 받는 식으로 말이다. 우리가 보낸 요청은 어떻게 목적지까지 도달하는 것일까? 컴퓨터에서는 패킷이라고 하는 형태로 정보를 주고 받는다. 네트워크의 유저들은 1:1로 연결되어 있지 않으므로, 일반적으로 패킷은 라우터라는..

백준 2164번 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net ▶ 문제 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 한 장 남을 때까지 반복하게 된다. 우선, 제일 위에 있는 카드를 바닥에 버린다. 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다. 예를 들어 N=4인 경우를 생각해 보자. 카드는 제일 위에서부터 1234 의 순서로 놓..

백준 18258번 18258번: 큐 2 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net ▶ 결과 정리 - 파이썬으로 풀었더니 시간초과가 관건이다. - 처음에는 list로 받아서 했는데 시간 초과 나서 찾아보니, 파이썬은 deque가 훨씬 빠르다고 해서 deque를 사용하였다. ▶ 1차 시도 -> 시간초과 N = int(input()) list = [] for i in range(N): t = input() list.append(t) result = [] for i in range(N): if "push" i..

▶ 시도 1 => 실패 - 걍 무식하게 한번 해봄, 역시나 시간 초과나옴 개킹받음, 무식의 결과는 시간초과인가 - 생각하기 싫은데 그냥 머리를 돌려야할듯 - 이미 저거 100이 넘어가면 돌렸을 때 뭐 나오는거 하는데도 시간 엄청 걸림 - 그냥 규칙이나 있을 까 싶어서 1부터 값을 넣어서 돌려서 나오는 값들 분석해봄 import sys N = int(input()) a = [1] for i in range(N-1): k = 1 a_l = len(a) while k 실패 - 뭔가 규칙성이 나와서 해봤음 5번 이상 부터 3*2^(n-4) - (2(N-6) + 1) 이라는 규칙을 찾았는데 틀렸다고 나옴 - 뭔가 예외가 있는듯 규칙성 찾는게 아닌가? - 1001과 0110이 반복함 그것을 A, B로 새워서 해보면..
IDEA - 무식하게 하기 - 10미만과 10이상일 때로 나누고 10이상일때는 숫자를 각 자리 숫자로 때어서 arr라는 0~9인 배열에다가 더하기 ex) 11일때 첫 시도 무식하게 하기 import sys import numpy as np N = int(input()) arr = np.zeros(10) if N < 10: for i in range(N): arr[i+1] += 1 else: for i in range(N): num_list = list(map(int, str(i+1))) for j in range(len(num_list)): if num_list[j] == 0: arr[0] += 1 if num_list[j] == 1: arr[1] += 1 if num_list[j] == 2: arr[2..