반응형

알고리즘/코테 준비 7

코테 대비 python, c 대강 정리

import sys sys.setrecursionlimit(10000) # 재귀 호출 깊이 한계를 10000으로 설정 dp = [[0 for _ in range(m)] for _ in range(n)] # 리스트 행렬 만들기 n * m graph = [[0] * (n + 1) for _ in range(n + 1)] # 올바른 2차원 리스트 초기화 numbers = list(map(int, input().split())) # 한 줄의 숫자들을 입력받음 num = [list(map(int, input().strip().split())) for _ in range(n)] # 행렬 입력받기 import sys # input 함수를 sys.stdin.readline으로 재정의 input = sys.stdin.r..

코테준비 - 우선순위 큐

백준 1927 최소 힙 문제 널리 잘 알려진 자료구조 중 최소 힙이 있다. 최소 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성하시오. 배열에 자연수 x를 넣는다. 배열에서 가장 작은 값을 출력하고, 그 값을 배열에서 제거한다. 프로그램은 처음에 비어있는 배열에서 시작하게 된다. 입력 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0이라면 배열에서 가장 작은 값을 출력하고 그 값을 배열에서 제거하는 경우이다. x는 2^31보다 작은 자연수 또는 0이고, 음의 정수는 입력으로 주어지지 않는다. 출력 입력에서 0이 주어진 횟수만큼 답..

코테 준비 - 그래프 1

백준 2606 바이러스 입력 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어진다. 이어서 그 수만큼 한 줄에 한 쌍씩 네트워크 상에서 직접 연결되어 있는 컴퓨터의 번호 쌍이 주어진다. 출력 1번 컴퓨터가 웜 바이러스에 걸렸을 때, 1번 컴퓨터를 통해 웜 바이러스에 걸리게 되는 컴퓨터의 수를 첫째 줄에 출력한다. 예제 입력 1 복사 7 6 1 2 2 3 1 5 5 2 5 6 4 7 예제 출력 1 복사 4 이걸 맨날 구현하면서만 배웠는데 함수로 사용하는 법을 몰라서... 파이썬은 이름만 que, deque라고 하지 자료형을 편하게 사용할 수 있으니까 막 ..

코테준비 - 분할정복

백준 2630 색종이 만들기 입력 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. 하얀색으로 칠해진 칸은 0, 파란색으로 칠해진 칸은 1로 주어지며, 각 숫자 사이에는 빈칸이 하나씩 있다. 출력 첫째 줄에는 잘라진 햐얀색 색종이의 개수를 출력하고, 둘째 줄에는 파란색 색종이의 개수를 출력한다. 예제 입력 1 8 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1 1 1 0 1 0 0 1 1 1 1 0 0 1 1 1 1 1 1 0 0 1 1 1 1 1 1 ..

코테 준비 - 구현 1

백준 30034 Slice string 문제 문자열을 좋아한 임스는 문자열 관련 새로운 게임을 만들었다. 문자열을 나누는 기준인 구분자, 구분자에서 제외하는 조건인 병합자와 관련하여 기준을 정하였다. 새로운 게임의 규칙은 다음과 같다. 이 게임은 문자열을 규칙에 따라 나누는 게임이다. 문자열을 공백과 주어진 구분자들로 나눈다. 각 문자 구분자는 영어 대소문자 중 하나이다. 각 숫자 구분자는 0부터 9까지의 숫자 중 하나이다. 병합자로 주어진 문자들은 구분자로 취급하지 않는다. 각 병합자는 영어 대소문자와 0부터 9까지의 숫자 중 하나이다. 구분자와 병합자는 모두 한 글자로 이루어져 있다. 나눌 문자열인 기준 문자열은 영어 대소문자, 숫자, 공백으로 이루어져 있다. 같은 구분자 및 병합자가 주어질 수 있다..

코테 준비 - DP 2 실버 1 까지

백준 1890 점프 문제 N×N 게임판에 수가 적혀져 있다. 이 게임의 목표는 가장 왼쪽 위 칸에서 가장 오른쪽 아래 칸으로 규칙에 맞게 점프를 해서 가는 것이다. 각 칸에 적혀있는 수는 현재 칸에서 갈 수 있는 거리를 의미한다. 반드시 오른쪽이나 아래쪽으로만 이동해야 한다. 0은 더 이상 진행을 막는 종착점이며, 항상 현재 칸에 적혀있는 수만큼 오른쪽이나 아래로 가야 한다. 한 번 점프를 할 때, 방향을 바꾸면 안 된다. 즉, 한 칸에서 오른쪽으로 점프를 하거나, 아래로 점프를 하는 두 경우만 존재한다. 가장 왼쪽 위 칸에서 가장 오른쪽 아래 칸으로 규칙에 맞게 이동할 수 있는 경로의 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 게임 판의 크기 N (4 ≤ N ≤ 100)이 주어진다. 그 다음..

갑자기 코테 준비 ...? - DP1

갑자기 코테를 보게 된.... 준비를 해봅시다... 백준 2579 계단문제 문제 처음 읽고 이게 무슨 문젠가 했네요.... 검색해보니 계단을 시작부터 생각하지 말고 끝에서부터 생가하기! 내가 n 칸 일때 나는 n-1칸에 왔거나, n-2칸에서 왔습니다. 그러나 3칸 연속 오를 수 없다는 조건 때문에 n-1에서 온 경우 n-3에서 왔습니다. 그렇게 쭉쭉 풀어갑니다. 그래서 계단 저장할 배열 하나, 점수 저장할 배열 하나 만들어서 하나 하나 저장해가면 됩니다. 백준 1463 1로 만들기 결국 그리디 문제 아닌가요? 숫자가 주어지면 -1 or -2 or 그대로 가지고 가서 3으로 나누기! 아닌가? 11일 때 11 -> 10 -> 5 -> 4 -> 2 -> 1 11 -> 10 -> 9 -> 3 -> 1 8일때 8..

728x90
728x90