Tiny Bunny
본문 바로가기
[BOJ #2628] 종이자르기 문제 아래 과 같이 직사각형 모양의 종이가 있다. 이 종이는 가로방향과 세로 방향으로 1㎝마다 점선이 그어져 있다. 가로 점선은 위에서 아래로 1번부터 차례로 번호가 붙어 있고, 세로 점선은 왼쪽에서 오른쪽으로 번호가 붙어 있다. 점선을 따라 이 종이를 칼로 자르려고 한다. 가로 점선을 따라 자르는 경우는 종이의 왼쪽 끝에서 오른쪽 끝까지, 세로 점선인 경우는 위쪽 끝에서 아래쪽 끝까지 한 번에 자른다. 예를 들어, 의 가로 길이 10㎝이고 세로 길이 8㎝인 종이를 3번 가로 점선, 4번 세로 점선, 그리고 2번 가로 점선을 따라 자르면 와 같이 여러 개의 종이 조각으로 나뉘게 된다. 이때 가장 큰 종이 조각의 넓이는 30㎠이다. 입력으로 종이의 가로 세로 길이, 그리고 잘라야할 점선들이 주어질 때, 가.. 2024. 3. 3.
[BOJ #11650] 좌표 정렬하기 문제 2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. 출력 첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다. 내가 쓴 코드 from sys import stdin; input = stdin.readline N = int(input()) pos = [] for _ in range(N): x, y = map(int, input().split()) po.. 2024. 2. 29.
[SWEA #20397] 돌 뒤집기 2 문제동전처럼 생긴 돌의 양면은 각각 흰색과 검은색으로 되어있고, 게임의 규칙은 다음과 같다.i번째 돌을 사이에 두고 마주보는 j개의 돌에 대해, 각각 같은 색이면 뒤집고, 다른 색이면 그대로 둔다.주어진 돌을 벗어나는 경우 뒤집기는 중지된다.입력첫 줄에 게임의 개수 T, 다음 줄부터 게임별로 첫 줄에 N, M, 다음 줄에 N개 돌의 초기상태, 이후 M개의 줄에 걸쳐 i, j가 주어진다.(1출력#과 게임번호, 빈칸에 이어 빈칸으로 구분된 돌의 상태를 출력한다. 내가 쓴 코드T = int(input())for t in range(T): N, M = map(int, input().split()) stone = list(map(int, input().split())) for m in range(.. 2024. 2. 29.
[SWEA #20396] 돌 뒤집기 게임 1 문제동전처럼 생긴 돌의 양면은 각각 흰색과 검은색으로 되어있고, 게임의 규칙은 다음과 같다.뒤집기는 i번째부터 j개의 돌을 i번째 돌의 색으로 바꿔놓는다.뒤집기는 가능한 돌에 대해서만 진행한다.예시)초기상태○●●○○●○●○●i=5, j=3인 경우 뒤집기 결과○●●○○○○●○●초기상태에서 i=9, j=3인 경우 뒤집기 결과, 11번째는 없으므로 두개만 뒤집기가 이뤄진다.○●●○○●○●○○입력첫 줄에 게임의 개수 T, 다음 줄부터 게임별로 첫 줄에 N, M, 다음 줄에 N개 돌의 초기상태, 이후 M개의 줄에 걸쳐 i, j가 주어진다.(1출력#과 게임번호, 빈칸에 이어 빈칸으로 구분된 돌의 상태를 출력한다. 내가 쓴 코드T = int(input())for t in range(T): # N : 돌 개수, .. 2024. 2. 29.
[SWEA #11010] 배열2 - 대각 최대값 문제N x N 배열에서 한 칸을 선택했을 때 그 칸을 기준으로 대각으로 네 방향에 포함된 값들의 총합이 최대가 되는 경우를 찾고 싶다.아래 왼쪽 그림은 N = 5인 경우의 입력 예이다. 이 때 (3행, 2열) 을 선택하면 대각으로 네방향의 총합이 17 로 최대가 된다.입력조건첫 줄에 테스트케이스 수가 주어진다.다음으로 배열의 크기 N(1다음 N개의 줄에 공백으로 구분된 N개의 정수 값이 주어진다.출력조건〈#〉과 케이스 번호를 출력하고 최대가 되는 값을 출력한다. 내가 쓴 코드# 우하 좌하 좌상 우상dj = [1, -1, -1, 1] # 행di = [1, 1, -1, -1] # 열T = int(input())for t in range(T): N = int(input()) arr = [list(m.. 2024. 2. 29.
[SWEA #11013] 배열1 - 3분할 문제입력으로 N개의 양수들이 주어진다. 3개의 연속적인 구간으로 나누고, 각 구간에 속한 값들의 총합을 구한다.세 구간의 합 중에서 최대값과 최소값의 차이가 최소가 되는 경우를 찾아서 차이를 출력한다.(2, 6, 8, 5, -8) 과 같이 5개의 정수가 주어지면 (2)(6)(8 5 -8) 으로 3분할 하면 합이 2, 6, 5 가 되고 최대/최소의 차이는 4(= 6 - 2)가 된다.입력첫 줄에 테스트케이스 수가 주어진다.다음으로 정수의 개수 N이 주어진다. (5 다음 줄에 공백으로 구분된 N개의 정수 값이 주어진다. ( -10 출력# 과 케이스 번호를 출력하고 3분할 시 최소와 최대의 차이가 최소인 값을 출력한다. 내가 쓴 코드T = int(input())for t in range(T): N = in.. 2024. 2. 29.
[SWEA #11315] 오목 판정 문제N X N 크기의 판이 있다. 판의 각 칸에는 돌이 있거나 없을 수 있다. 돌이 가로, 세로, 대각선 중 하나의 방향으로 다섯 개 이상 연속한 부분이 있는지 없는지 판정하는 프로그램을 작성하라.  입력첫 번째 줄에 테스트 케이스의 수 T가 주어진다.각 테스트 케이스의 첫 번째 줄에는 하나의 정수 N(5 ≤ N ≤ 20)이 주어진다.다음 N개의 줄의 각 줄에는 길이 N인 문자열이 주어진다. 각 문자는 ‘o’또는 ‘.’으로, ‘o’는 돌이 있는 칸을 의미하고, ‘.’는 돌이 없는 칸을 의미한다.  출력각 테스트 케이스 마다 돌이 다섯 개 이상 연속한 부분이 있으면 “YES”를, 아니면 “NO”를 출력한다. 내가 쓴 코드1T = int(input())for t in range(T): N = int(i.. 2024. 2. 29.
[SWEA #4408] 자기 방으로 돌아가기 문제고등학교 학생들이 학교에서 수련회를 갔다. 수련회에 간 학생들은 친구들과 음주가무를 즐기다가 밤 12시가 되자 조교들의 눈을 피해 자기방으로 돌아가려고 한다.제 시간에 자기방으로 돌아가지 못한 학생이 한 명이라도 발견되면 큰일나기 때문에 최단 시간에 모든 학생이 자신의 방으로 돌아가려고 한다.숙소는 긴 복도를 따라 총 400개의 방이 다음과 같이 배열되어 있다.모든 학생들은 현재 위치에서 자신의 방으로 돌아가려고 하는데, 만약 두 학생이 자기방으로 돌아가면서 지나는 복도의 구간이 겹치면 두 학생은 동시에 돌아갈 수 없다.예를 들어 (방1 -> 4) 와 (방3 -> 6) 은 복도 구간이 겹치므로 한 사람은 기다렸다가 다음 차례에 이동해야 한다. 이동하는 데에는 거리에 관계없이 단위 시간이 걸린다고 하자.. 2024. 2. 29.
728x90
반응형