목록시뮬레이션 (21)
기록방
👉 문제링크 1417번: 국회의원 선거 첫째 줄에 후보의 수 N이 주어진다. 둘째 줄부터 차례대로 기호 1번을 찍으려고 하는 사람의 수, 기호 2번을 찍으려고 하는 수, 이렇게 총 N개의 줄에 걸쳐 입력이 들어온다. N은 50보다 작거나 같 www.acmicpc.net 🔸 문제 분석 🔸 배열의 첫째자리가 최대값이 되도록 다른 인덱스에서 값을 가져오는데 드는 최소 횟수를 출력한다. 🔸 코드 🔸 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { Buff..
👉 문제링크 1331번: 나이트 투어 나이트 투어는 체스판에서 나이트가 모든 칸을 정확히 한 번씩 방문하며, 마지막으로 방문하는 칸에서 시작점으로 돌아올 수 있는 경로이다. 다음 그림은 나이트 투어의 한 예이다. 영식이는 6× www.acmicpc.net 🔸 문제 분석 🔸 입력으로 주어진 루트가 체스의 나이트가 중복없이 움직이고, 마지막 까지 돌아올 수 있는지 확인한다. 나이트는 8가지 방식으로 움직일 수 있다. (말 모양) 중복된 곳을 밟으면 안된다. 루트의 처음과 마지막도 나이트가 오갈 수 있어야 한다. 🔸 코드 🔸 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new ..
👉 문제링크 1547번: 공 첫째 줄에 컵의 위치를 바꾼 횟수 M이 주어지며, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 컵의 위치를 바꾼 방법 X와 Y가 주어지며, X번 컵과 Y번 컵의 위치를 서로 바꾸는 것 www.acmicpc.net 🔸 문제 분석 🔸 공의 위치는 계속 첫 위치이고, 컵 끼리 자리가 변한다. 다시 말해보면 공은 상관없고, 컵을 바꾸다가 첫 번째 자리 컵이 무엇인지 출력한다. 🔸 코드 🔸 m = int(input()) cup = [1,2,3] for i in range(m): x, y = map(int,input().split()) x_idx = cup.index(x) y_idx = cup.index(y) cup[x_idx], cup[y_idx] = cup[y_..
👉 문제링크 12873번: 기념품 백준이는 BOJ 알고리즘 캠프 참가자 중 한 명에게 기념품을 주려고 한다. 하지만, 많은 참가자 중에서 어떤 사람을 뽑아서 기념품을 줘야하는지 고민이 되기 시작했다. 따라서, 백준이는 게임을 www.acmicpc.net 🔸 문제 분석 🔸 1~N원소 중 1, 2, 3...의 3제곱 번째 원소를 제거하며 1개가 남을때까지 반복하는 문제이다. 🔸 코드 🔸 from collections import deque import math N = int(input()) t = 0 member = deque(range(1,N+1)) while len(member) != 1: t += 1 member.rotate(-((int(math.pow(t,3))%len(member))-1)) memb..
👉 문제링크 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 🔸 문제 분석 🔸 땅 크기(N)와 인구 최소, 최대값(L,R)이 주어지고, 2차원 배열 형태의 인구수가 주어진다. 인구수의 차이가 L, R 값 사이라면, 국경선을 연다. 국경선이 열려서 통행이 가능한 나라들을 한 그룹으로 묶는다. 한 그룹의 평균 인구수를 그룹내 모든 칸에 채운다. (인구를 평준화한다) 이 평준화 작업은 BFS로 구현하면 될 것 같다. 국경선이 한 곳이라도 열렸다면, 인구 이동이 있으므로 하루가 지나야 한다. 🔸 코드 🔸..