Tiny Bunny
본문 바로가기
[BOJ #2606] 바이러스 문제신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다.예를 들어 7대의 컴퓨터가 과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, 5, 6 네 대의 컴퓨터는 웜 바이러스에 걸리게 된다. 하지만 4번과 7번 컴퓨터는 1번 컴퓨터와 네트워크상에서 연결되어 있지 않기 때문에 영향을 받지 않는다.어느 날 1번 컴퓨터가 웜 바이러스에 걸렸다. 컴퓨터의 수와 네트워크 상에서 서로 연결되어 있는 정보가 주어질 때, 1번 컴퓨터를 통해 웜 바이러스에 걸리게 되는 컴퓨터의 수를 출.. 2024. 3. 5.
[BOJ #1244] 스위치 켜고 끄기 문제 1부터 연속적으로 번호가 붙어있는 스위치들이 있다. 스위치는 켜져 있거나 꺼져있는 상태이다. 에 스위치 8개의 상태가 표시되어 있다. ‘1’은 스위치가 켜져 있음을, ‘0’은 꺼져 있음을 나타낸다. 그리고 학생 몇 명을 뽑아서, 학생들에게 1 이상이고 스위치 개수 이하인 자연수를 하나씩 나누어주었다. 학생들은 자신의 성별과 받은 수에 따라 아래와 같은 방식으로 스위치를 조작하게 된다. 남학생은 스위치 번호가 자기가 받은 수의 배수이면, 그 스위치의 상태를 바꾼다. 즉, 스위치가 켜져 있으면 끄고, 꺼져 있으면 켠다. 과 같은 상태에서 남학생이 3을 받았다면, 이 학생은 와 같이 3번, 6번 스위치의 상태를 바꾼다. 여학생은 자기가 받은 수와 같은 번호가 붙은 스위치를 중심으로 좌우가 대칭이면서 가장.. 2024. 3. 5.
[BOJ #2846] 오르막길 문제 상근이는 자전거를 타고 등교한다. 자전거 길은 오르막길, 내리막길, 평지로 이루어져 있다. 상근이는 개강 첫 날 자전거를 타고 가면서 일정 거리마다 높이를 측정했다. 상근이는 가장 큰 오르막길의 크기를 구하려고 한다. 측정한 높이는 길이가 N인 수열로 나타낼 수 있다. 여기서 오르막길은 적어도 2개의 수로 이루어진 높이가 증가하는 부분 수열이다. 오르막길의 크기는 부분 수열의 첫 번째 숫자와 마지막 숫자의 차이이다. 예를 들어, 높이가 다음과 같은 길이 있다고 하자. 12 3 5 7 10 6 1 11. 이 길에는 2 개의 오르막길이 있다. 밑 줄로 표시된 부분 수열이 오르막길이다. 첫 번째 오르막길의 크기는 7이고, 두 번째 오르막길의 크기는 10이다. 높이가 12와 6인 곳은 오르막길에 속하지 않.. 2024. 3. 3.
[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.
728x90
반응형