본문 바로가기

분류 전체보기

(328)
[백준] 20056번 : 마법사 상어와 파이어볼 20056번: 마법사 상어와 파이어볼 20056번: 마법사 상어와 파이어볼 첫째 줄에 N, M, K가 주어진다. 둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다. 파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다. 서로 다른 두 파이어볼의 위치 www.acmicpc.net 🤔 문제분석 문제의 포인트는 1번행과 N번행이 연결되어있고, N번열과 1번열이 연결되어있는 상태를 어떻게 구현할 것인가가 이 문제의 포인트 입니다. chage_dir 함수를 만들었고 해당 함수는 음수가 되든 범위가 넘어가든 상황을 나머지 연산을 활용하여 처리하였습니다. 파이어볼이 여러개 모여있는곳을 딕셔너리를 활용하여 딕셔너리에 리스트를 받고 리스트가 2보다 클경우 파이어볼을 분산시킵니다..
[백준] 1022번 : 소용돌이 예쁘게 출력하기 1022번: 소용돌이 예쁘게 출력하기 1022번: 소용돌이 예쁘게 출력하기 첫째 줄에 네 정수 r1, c1, r2, c2가 주어진다. www.acmicpc.net 🤔 문제분석 회전하는 로직을 구현하는것이 이문제의 핵심이다. 회전은 아래의 사진과 같이 이루어진다. i가 (2, 3, 4, 5 … ) 1씩 증가하면서 두번씩 (좌 or 우), (상 or 하) 움직인다. 그것을 방향은 방향을 다움직이고나서 다음 방향으로 전환 시켜주면 된다. 회전 구현이 다 끝났다면 이제 문제에 조건이 맞는 길이를 맞추어주면 끝 💻 코드 import sys input = sys.stdin.readline r1, c1, r2, c2 = map(int, input().split()) R = r2 - r1 + 1 C = c2 - c1 ..
[백준] 2931번 : 가스관 2931번: 가스관 2931번: 가스관 www.acmicpc.net 🤔 문제분석 너비우선탐색으로 파이프 다음에 빈칸이 나올경우를 구한뒤 그 빈칸이 어떤 파이프가 들어가야하고, 그 파이프가 들어갔을때 기존에 있던 파이프와 호환되는지 확인해서 찾으면 된다. 파이브가 호환되는지 판단하는 로직은 네 방향을 모두 방문 해보면서 그 해당하는 파이프가 그 방향으로 열려있는 파이프를 찾고, 그 방향으로 가르키는 파이프를 추론합니다. 추론하는 방식은 딕셔너리와 배열의 인덱스를 활용하여 찾아내었습니다. 💻 코드 import sys input = sys.stdin.readline from collections import deque pipe_type = ['|','-','+','1','2','3','4'] moves = [..
[백준] 1036번 : 36진수 1036번: 36진수 1036번: 36진수 첫째 줄에 수의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에 수가 주어진다. N은 최대 50이고, 수의 길이도 최대 50이다. 마지막 줄에 K가 주어진다. K는 36보다 작거나 같은 자연수 또는 0이다. www.acmicpc.net 🤔 문제분석 파이썬에서 36진수로 변환해주는 기능이 있어서 더욱 쉽게 풀 수 있었습니다. 자리수와 알파벳을 고려한 가중치를 모두 구하고 가중치가 가장 높은 수를 K개 선택하여서 K개를 모두 Z로 바꿔준 후 모든 문자열의 10진수로 변환하여 모두 더한 뒤 다시 36진수 자리로 변환합니다. 💻 코드 import sys from collections import defaultdict VALUE_36 = "0123456789ABCDEFGH..
[백준] 18809번 : Gaaaaaaaaaarden 18809번: Gaaaaaaaaaarden 18809번: Gaaaaaaaaaarden 첫째 줄에 정원의 행의 개수와 열의 개수를 나타내는 N(2 ≤ N ≤ 50)과 M(2 ≤ M ≤ 50), 그리고 초록색 배양액의 개수 G(1 ≤ G ≤ 5)와 빨간색 배양액의 개수 R(1 ≤ R ≤ 5)이 한 칸의 빈칸을 사이에 두 www.acmicpc.net 🤔 문제분석 파이썬의 조합 라이브러리를 활용하여 초록색 씨앗과 빨간색 씨앗 후보를 모두 부르트포스 하여 문제를 해결하였습니다. 초록색 씨앗과 빨간색 씨앗의 후보가 생성되었다면, 씨앗을 퍼트려야합니다. 너비우선탐색을 활용하였습니다. 너비 우선 탐색을 활용한 이유는 너비우선탐색은 최단거리 탐색을 우선으로 탐색하기때문에 초록색 씨앗과 빨간색 씨앗이 동시에 접하는 부분을..
[백준] 21610번 : 마법사 상어와 비바라기 21610번: 마법사 상어와 비바라기 21610번: 마법사 상어와 비바라기 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기 www.acmicpc.net 🤔 문제분석 아래의 3가지의 함수를 통하여 M번 반복하여 문제를 해결하였습니다. 그룸을 이동시키는 함수 그룸을 통하여 바구니에 저장된 물이 증가하는 함수 새로운 그룸을 생성하는 함수 그룸을 이동시키는 함수에서 중요한점은 N이 넘어가는 순간 0으로 바꾸어주고, -1로 넘어가는순간 N-1로 바꾸어주는 로직이 필요하다. 이부분은 문제에서 N번째 열과 0번째 열이 연결되어있고, N번째 행과 0번째 행이 연결되어있는 조건을 해결..
[백준] 19237번 : 어른 상어 19237번: 어른 상어 19237번: 어른 상어 첫 줄에는 N, M, k가 주어진다. (2 ≤ N ≤ 20, 2 ≤ M ≤ N2, 1 ≤ k ≤ 1,000) 그 다음 줄부터 N개의 줄에 걸쳐 격자의 모습이 주어진다. 0은 빈칸이고, 0이 아닌 수 x는 x번 상어가 들어있는 칸을 의미 www.acmicpc.net 🤔 문제분석 함수를 3가지로로 나누어서 문제를 해결하였습니다. 상어가 움직인다 : 상어가 움직이는것은 첫번째로 우선순위에 따라서 빈칸을 체크하고, 그 다음순으로 자기자신의 냄새를 찾는다. ( 여기서 중요한점은 항상 빈칸이거나 자기자신의 냄새를 찾을 수 있다.) 냄새를 풍긴다 : 움직이는 우선순이때문에 다른 상어와 겹칠 일은 없다. 냄새가 사라진다 : 냄새가 사라지면서 만약 냄새가 0이되면 상어 ..
[백준] 17837번 : 새로운게임 17837번: 새로운 게임 2 17837번: 새로운 게임 2 재현이는 주변을 살펴보던 중 체스판과 말을 이용해서 새로운 게임을 만들기로 했다. 새로운 게임은 크기가 N×N인 체스판에서 진행되고, 사용하는 말의 개수는 K개이다. 말은 원판모양이고, 하 www.acmicpc.net 🤔 문제분석 시뮬레이션 문제로 주어진 조건을 잘 분석하여 분기처리하여 문제를 풀면 풀 수 있다. 3가지 로직을 구현하여 조합하면 된다. 파란색과 범위를 벗어나는 조건 자기자신위에 있는 배열을 구하는 방법 자기자신위에 배열을 구하는방법은 현재 채스판의 위치에서 자기자신의 인덱스를 찾아서 그 인덱스를 기준으로 모든 값을 복사한다. 그리고 그 인덱스를 기준으로 모든값을 제거시킨다. 빨간색일때 배열을 뒤집는방법 파이썬의 리스트 컴프리핸션..