시뮬레이션
-
[백준] 3943 헤일스톤수열 with PythonPS 2023. 4. 4. 17:09
📌 BOJ 3943 헤일스톤수열 💡 조건 헤일스톤 수열은 아래와 같이 정의한다. n이 짝수라면, 2로 나눈다. n이 홀수라면, 3을 곱한 뒤 1을 더한다. 헤일스톤 추측은 임의의 양의 정수 n으로 수열을 시작한다면, 항상 4, 2, 1, 4, 2, 1,...로 끝난다는 추측이다. 이 문제에서는 1이 나오면 수열이 끝난 것으로 처리한다. n이 주어졌을 때, 이 수열에서 가장 큰 값을 찾아 출력하는 문제 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 100,000)가 주어진다. 다음 줄부터 T개의 줄에는 헤일스톤 수열의 시작값 n이 주어진다. (1 ≤ n ≤ 100,000) 구현, 시뮬레이션 유형읨 문제 🔖 예제 및 실행결과 예제 1 4 1 3 9999 100000 실행결과 1 1 16 101248 10..
-
[백준] 20436 ZOAC 3 with PythonPS 2022. 5. 17. 00:52
📌 BOJ 20436 ZOAC 3 💡 조건 독수리 타법이란 양 손의 검지손가락만을 이용해 타자를 치는 타법이다. 성우는 한글 자음 쪽 자판은 왼손 검지손가락으로 입력하고, 한글 모음 쪽 자판은 오른손 검지손가락으로 입력한다. a의 좌표가 (x1, y1)이고, b의 좌표가 (x2, y2)일 때, a에 위치한 성우의 손가락이 b로 이동하는 데에는 a와 b의 택시 거리 |x1-x2|+|y1-y2| 만큼의 시간이 걸린다. 각 키를 누르는 데에는 1의 시간이 걸린다. 성우는 두 손을 동시에 움직일 수 없다. 성우가 사용하는 키보드는 쿼티식 키보드이며, 아래 그림처럼 생겼다. 첫 번째 줄에는 두 알파벳 소문자 sL, sR이 주어진다. sL, sR은 각각 왼손 검지손가락, 오른손 검지손가락의 처음 위치이다. 그 다음..
-
[백준] 1531 투명 with PythonPS 2022. 3. 12. 02:20
📌 BOJ 1531 투명 💡 조건 세준이는 1×1크기의 그림으로 모자이크한 100×100크기의 그림을 가지고 있다. 어느 날 이 모자이크 중 일부 그림이 너무 보기 싫어서 N개의 불투명한 종이로 그림을 가리기 시작했다. 그림의 현재 부분 위에 M개 이하의 종이가 올려져 있으면 그림은 그 부분에서 보이게 된다. N은 0보다 크거나 같고, 50보다 작거나 같다. M은 0보다 크거나 같고, 50보다 작거나 같다. 왼쪽 아래 모서리의 x, y좌표, 오른쪽 위 모서리의 x, y좌표 순으로 주어진다. 모든 좌표는 100보다 작거나 같은 자연수이다. 시뮬레이션, 구현 🖥 소스 코드 from sys import stdin board = [[False] * 101 for _ in range(101)] n, m = map..
-
[백준] 1236 성 지키기 with PythonPS 2022. 2. 10. 17:54
📌 BOJ 1236 성 지키기 💡 조건 직사각형 모양의 성을 가지고 있다. 성의 1층은 몇 명의 경비원에 의해서 보호되고 있다. 영식이는 모든 행과 모든 열에 한 명 이상의 경비원이 있으면 좋겠다고 생각했다. 성의 크기와 경비원이 어디있는지 주어졌을 때, 몇 명의 경비원을 최소로 추가해야 영식이를 만족시키는지 구하는 문제 0 m)만큼 순회하면서 row[i], col[j] 가 각각 False 일 경우 r1, r2 에 각각 + 1을 더해준다. r1, r2 중 가장 큰 값을 출력한다. 💾 느낀점 구현 문제이지만, 어디에 경비원이 있어야 각 열과 행이 모두 True 값을 가지는지 생각하는 것이 헷갈렸다. 브론즈라고 했지만, 구현은 역시 그 이상의 티어로 봐야하는 것 같다. 논리적인 사고력이 약하다는 것을 다시 ..
-
[백준] 1063 킹 with PythonPS 2021. 12. 29. 23:16
📌 BOJ 1063 킹 💡 조건 체스판의 크기는 8*8 체스판에서의 말의 위치는 알파벳 하나와 숫자 하나로 구성되어 있다. 알파벳은 열(column), 숫자는 행(row)을 상징한다. 알파벳은 AH, 숫자는 18까지이다. 킹이 움직일 수 있는 방법은 8가지가 있으며, 문제에 제시되어 있다. 체스판에 있는 돌은 킹이 움직인 방향으로 같이 움직인다. 체스판이나 돌이 입력에서 주어진대로 움직이다가 밖으로 나갈 경우, 그 이동은 건너 뛴다. 첫째 줄에 킹의 마지막 위치, 둘째 줄에 돌의 마지막 위치를 출력한다. 구현, 시뮬레이션의 문제 🖥 소스 코드 from sys import stdin k, s, n = stdin.readline().rstrip().split() pos_k = [ord(k[0]), int(k..
-
[백준] 20546 🐜 기적의 매매법 🐜 with PythonPS 2021. 12. 18. 20:01
📌 BOJ 20546 🐜 기적의 매매법 🐜 💡 조건 모든 거래는 전량 매수와 전량 매도로 이루어진다. 현재 가지고 있는 현금이 100원이고 주가가 11원이라면 99원어치의 주식을 매수하는 것이다. 단, 현금이 100원 있고 주가가 101원이라면 주식을 살 수 없다. 성민이는 빚을 내서 주식을 하지는 않는다. 3일 연속 가격이 전일 대비 상승하는 주식은 다음날 무조건 가격이 하락한다고 가정한다. 따라서 현재 소유한 주식의 가격이 3일째 상승한다면, 전량 매도한다. 전일과 오늘의 주가가 동일하다면 가격이 상승한 것이 아니다. 3일 연속 가격이 전일 대비 하락하는 주식은 다음날 무조건 가격이 상승한다고 가정한다. 따라서 이러한 경향이 나타나면 즉시 주식을 전량 매수한다. 전일과 오늘의 주가가 동일하다면 가격이..
-
[백준] 1743 음식물 피하기 with PythonPS 2021. 10. 18. 20:41
📌 BOJ 1743 음식물 피하기 💡 조건 통로의 세로 길이 N(1 ≤ N ≤ 100) 통로의 가로 길이 M(1 ≤ M ≤ 100) 음식물 쓰레기의 개수 K(1 ≤ K ≤ N×M) K개의 줄에 음식물이 떨어진 좌표 (r, c) DFS 유형의 문제(깊이우선탐색) 🖥 소스 코드 from sys import stdin, setrecursionlimit setrecursionlimit(10 ** 9) n, m, k = map(int, stdin.readline().split()) arr = [[0] * (m + 1) for _ in range(n + 1)] food_t = [] for _ in range(k): x, y = map(int, stdin.readline().split()) arr[x][y] = 1 ..
-
[백준] 1713 후보 추천하기 with PythonPS 2021. 10. 18. 20:30
📌 BOJ 1713 후보 추천하기 💡 조건 사진틀의 개수 N이 주어진다. (1 ≤ N ≤ 20) 총 추천 횟수는 1,000번 이하이며 학생을 나타내는 번호는 1부터 100까지의 자연수 사진틀의 개수와 전체 학생의 추천 결과가 추천받은 순서대로 주어졌을 때, 최종 후보가 누구인지 결정 구현 & 시뮬레이션 유형의 문제 🖥 소스 코드 from sys import stdin import heapq def solution(n): student = {} data = list(map(int, stdin.readline().split())) for s in data: if s not in student: if len(student) >= n: # dict를 heapq 모듈을 사용해 최솟값을 뽑아냄 a = heapq.n..
-
[백준] 1244 스위치 켜고 끄기 with PythonPS 2021. 10. 17. 21:38
📌 BOJ 1244 스위치 켜고 끄기 💡 조건 및 풀이 첫째 줄은 스위치 개수. 스위치 개수는 100 이하인 양의 정수. 둘째 줄은 각 스위치의 상태. 켜져 있으면 1, 꺼져있으면 0이라고 표시 셋째 줄에는 학생 수. 학생수는 100 이하인 양의 정수 넷째 줄부터 마지막 줄까지 한 줄에 한 학생의 성별, 학생이 받은 수. 남학생은 스위치 번호가 자기가 받은 수의 배수이면, 그 스위치의 상태를 바꾼다. 즉, 스위치가 켜져 있으면 끄고, 꺼져 있으면 켠다. 여학생은 자기가 받은 수와 같은 번호가 붙은 스위치를 중심으로 좌우가 대칭이면서 가장 많은 스위치를 포함하는 구간을 찾아서, 그 구간에 속한 스위치의 상태를 모두 바꾼다. 이때 구간에 속한 스위치 개수는 항상 홀수가 된다. 구현 & 시뮬레이션 유형의 문제..