알고리즘/백준 (263) 썸네일형 리스트형 [백준] 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가지 로직을 구현하여 조합하면 된다. 파란색과 범위를 벗어나는 조건 자기자신위에 있는 배열을 구하는 방법 자기자신위에 배열을 구하는방법은 현재 채스판의 위치에서 자기자신의 인덱스를 찾아서 그 인덱스를 기준으로 모든 값을 복사한다. 그리고 그 인덱스를 기준으로 모든값을 제거시킨다. 빨간색일때 배열을 뒤집는방법 파이썬의 리스트 컴프리핸션.. [백준] 17825번 : 주사위 17825번: 주사위 윷놀이 17825번: 주사위 윷놀이 주사위 윷놀이는 다음과 같은 게임판에서 하는 게임이다. 처음에는 시작 칸에 말 4개가 있다. 말은 게임판에 그려진 화살표의 방향대로만 이동할 수 있다. 말이 파란색 칸에서 이동을 시작하면 www.acmicpc.net 🤔 문제분석 그래프와 점수의 판을 하드코딩으로 그려놓고 파란색 판을 이동하는 조건을 걸어 문제를 해결 할 수 있습니다. 파란색칸은 배열의 길이가 2인경우이고 해당 배열로 이동할경우 그래프에 그려놓은 위치로 이동시킵니다. 이제 위의 조건으로 백트래킹을 이용하여 문제를 해결하면 끝입니다. 💻 코드 import sys input = sys.stdin.readline graph = [[1], [2], [3], [4], [5], [6, 21],.. [백준] 4803번 : 트리 4803번: 트리 4803번: 트리 입력으로 주어진 그래프에 트리가 없다면 "No trees."를, 한 개라면 "There is one tree."를, T개(T > 1)라면 "A forest of T trees."를 테스트 케이스 번호와 함께 출력한다. www.acmicpc.net 🤔 문제분석 특정 노드로 부터 시작하여 사이클이 존재하는지 확인하면 된다. 방문 체크 배열을 두어 사이클이 발생했었던 노드는 다시 방문하지 않는다. 사이클이 발생하는 유무는 너비우선탐색으로 찾아내었는데, 입력받은 간선을 계속 따라가 가면서 방문했던 노드를 또다시 방문했다면 사이클이 발생한 것이다. 💻 코드 import sys from collections import deque input = sys.stdin.readline .. [백준] 16120번 : PPAP 16120번: PPAP 16120번: PPAP 첫 번째 줄에 문자열이 주어진다. 문자열은 대문자 알파벳 P와 A로만 이루어져 있으며, 문자열의 길이는 1 이상 1,000,000 이하이다. www.acmicpc.net 🤔 문제분석 스택자료구조와 P의 개수와 C의 개수를 카운팅하여 조건부 연산을 통하여 PPAP를 만들 수 있는지 확인합니다. P를 만나면 p_count를 증가시키고 C를 만나면 c_count를 증가시킵니다. 이전에 값이 C이고 그다음이 P가 나올경우 p_count의 PPAP를 만들 수 있는지 카운팅을 하고 p_count값을 -2 감소 c_count값을 -1을 감소시킵니다. 이렇게 해서 최종 p_count값이 1이 나온경우만 정답이 됩니다. 마지막에 PPAP → P로 변하기 때문이다. 💻 코드 .. 이전 1 2 3 4 5 6 7 ··· 33 다음