본문 바로가기

Algorithm231

[Python3] 백준 1347번 미로 만들기 사용 언어 - Python3 문제 - 미로 만들기 1347번: 미로 만들기 홍준이는 미로 안의 한 칸에 남쪽을 보며 서있다. 미로는 직사각형 격자모양이고, 각 칸은 이동할 수 있거나, 벽을 포함하고 있다. 모든 행과 열에는 적어도 하나의 이동할 수 있는 칸이 있다. 홍 www.acmicpc.net 정답 최대 x,y 값 구하고, 2차원 배열 만들기 (정답 맞춘 여부 X) 1. loc_list (0,0)에서 시작해서 이동한 값 x,y에 저장하기 R 명령어) 방향을 오른쪽으로 전환 -> status+1 한 후 4로 나누어 몇번째 원소인지 찾기 (status+1)%4 L 명령어) 방향을 왼쪽으로 전환 -> status가 0이 아니라면, status-1, 아니면 3 x는 loc_list의 가장 최근 x좌표에서 R.. 2023. 4. 9.
[Python3] 백준 1002번 터렛 사용 언어 - Python3 문제 - 터렛 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net 정답 if문 경우의 수 생각하기 (정답 맞춘 여부 X) 1. 두 원이 같고, 반지름이 같은 경우 => 무한한 경우 print(-1) 2. 두 원이 접해있는 경우 (내접 or 외접) => 무조건 점은 한개 print(1) 3. 두 원이 서로 다른 점 안에서 만날 때 => 점은 둘 중 하나 가능 print(2) 4. 나머지 경우 print(0) import math t = int(input()) for _ in range(t): x1, y1, r1, x2, y2, r2 = m.. 2023. 4. 7.
[Python3] 백준 1904번 01타일 사용 언어 - Python3 문제 - 01타일 1904번: 01타일 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이 www.acmicpc.net 정답 DP 기초 문제 (정답 맞춘 여부 X) 1. dp = [0]*(1000001), n+1 만큼 0으로 이루어진 리스트 dp 생성 2. 예외처리 n이 1,2이면, 답이 정해져있다. 가독성을 위해 인덱싱은 1부터 한다. dp[1] = 1 dp[2] = 2 3. n이 3이상인 경우 dp[i] = i까지의 최대값 dp[i]=(dp[i-2]+d[i-1])%15746 dp[n] = 모든 2진 수열의 개수를 15746으로 나눈 나머지 2023. 4. 6.
[Python3] 백준 2579번 계단오르기 사용 언어 - Python3 문제 - 계단 오르기 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 정답 DP 기초 문제 (정답 맞춘 여부 X) 1. dp = [0]*(n), 0으로 이루어진 리스트 dp 생성 2. 예외처리 계단이 애초에 두개 이하이면, 첫번째 계단+두번째 계단밖에 정답이 없으므로 sum(s) 3. 계단이 3개이상인 경우부터 dp에 값 입력 dp[i] = i까지의 계단 최대값 dp[0] = s[0] dp[1] = s[0]+s[1] dp[2]부터는 경우의 수가 늘어난다. dp[i]=max(dp[i-3]+s[i.. 2023. 4. 5.
[Python3] 백준 1449번 수리공 항승 사용 언어 - Python3 문제 - 수리공 항승 1449번: 수리공 항승 첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나 www.acmicpc.net 정답 조건문 (정답 맞춘 여부 X) 테이프를 처음 붙이는 start 지점에서 테이프길이 L 사이에 또 다른 물이 새는 위치가 있다면 continue 아니라면, start 지점 이동 + 테이프 한개를 더 사용해야하므로 cnt += 1 import sys input = sys.stdin.readline N,L = map(int,input().split()) #N물이 새는 곳의 개수 / L테이프의 길이.. 2023. 4. 5.
[Python3] 백준 1270번 전쟁 - 땅따먹기 사용 언어 - Python3 문제 - 전쟁 - 땅따먹기 1270번: 전쟁 - 땅따먹기 첫째 줄에는 땅의 개수 n(n 2023. 4. 5.
[Python3] 백준 1166번 선물 사용 언어 - Python3 문제 - 선물 1166번: 선물 민식이는 아이들에게 선물할 같은 크기의 작은 박스를 N개 가지고 있다. 모든 작은 박스는 정육면체이고, 크기는 A × A × A 이다. 민식이는 이 작은 박스를 크기가 L × W × H 인 직육면체 박스에 www.acmicpc.net 정답 이분 탐색 문제 (정답 맞춘 여부 X) 1. L, W, H를 구하려는 값 A로 나누었을 때 N보다 작거나 같아야하므로 A를 구하기 위한 이분탐색을 사용한다. A는 최소 0개 부터 쵀대 max(L,W,H)개 까지 있을 수 있으므로, left = 0, right = max(L,W,H), mid = (left+right)//2 이다. 만약 N개의 상자를 모두 넣을 수 있다면(= N보다 작거나 같으면), left =.. 2023. 4. 4.
[Python3] 백준 1072번 게임 사용 언어 - Python3 문제 - 게임 1072번: 게임 김형택은 지금 몰래 Spider Solitaire(스파이더 카드놀이)를 하고 있다. 형택이는 이 게임을 이길 때도 있었지만, 질 때도 있었다. 누군가의 시선이 느껴진 형택이는 게임을 중단하고 코딩을 하기 시 www.acmicpc.net 정답 이분 탐색 문제 (정답 맞춘 여부 X) 1. 파이썬에서 소숫점 버린 승률 구하기 (Y//X)*100 파이썬에서 부동소숫점 오차로 오류! Z = (Y*100)//X 사용! 2. 예외 처리 형택이는 앞으로의 모든 게임에서 지지 않기 때문에 x+1, y+1이다. 만약 x==y 라면, x//y=100이고 x+1==y+1이라 Z값이 항상 같다. 절대 변하지 않는다. z가 99 이상이면 print(-1)을 출력해준다... 2023. 4. 4.
[Python3] 백준 1004번 어린 왕자 사용 언어 - Python3 문제 - 어린 왕자 1004번: 어린 왕자 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 첫째 줄에 출발점 (x1, y1)과 도착점 (x2, y2)이 주어진다. 두 번째 줄에는 행성계의 개수 n이 주 www.acmicpc.net 정답 출발/도착점-행성계 단순 계산 문제 (정답 맞춘 여부 X) 1. "제곱"을 통해 반지름 크기 비교 행성계 반지름 vs 출발점, 행성계 x 반지름 행성계 반지름 vs 도착점, 행성계 y 반지름 행성계 반지름보다 안에 있으면 카운트+=1 T=int(input()) for _ in range(T): x1, y1, x2, y2 = list(map(int,input().split())) #출발점, 도착점.. 2023. 4. 2.
[Python3] 백준 1063번 킹 사용 언어 - Python3 문제 - 킹 1063번: 킹 8*8크기의 체스판에 왕이 하나 있다. 킹의 현재 위치가 주어진다. 체스판에서 말의 위치는 다음과 같이 주어진다. 알파벳 하나와 숫자 하나로 이루어져 있는데, 알파벳은 열을 상징하고, 숫자는 www.acmicpc.net 정답 위치 이동시키는 nx,ny 문제 (정답 맞춘 여부 X) 1. ord("A") = 64 외우자 2. 딕셔너리를 이용하여 방향 move 설정 king, stone, N = input().split() k = list(map(int, [ord(king[0]) - 64, king[1]])) s = list(map(int, [ord(stone[0]) - 64, stone[1]])) move = {'R': [1, 0], 'L': [-1,.. 2023. 3. 31.