Algorithm 179

[Python] SWEA 1240번 단순 2진 암호코드

문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 문제를 해결하기 위해 필요한 암호의 규칙은 일단 모든 암호값이 1로 끝나고, 암호 안에 1이 한 번도 없는 암호가 없다는 점이다. 따라서 암호를 해독하기 위해 필요없는 행과 열의 값들을 모두 삭제한다. 행은 1이 한번이라도 등장하는 곳을 빼고 모두 잘라내고, 열은 마지막 1을 가지는 인덱스 값을 구해 마지막 인덱스까지 열의 길이가 56이 될 수 있또록 자른다. 그 후 해독해야하는 암호들만 남아있는 문자열을 사용하여 문자를 7개씩 잘라가며 해독하여 해독한 값을 새로운 배열에 모두 저장한다. 그 후 암호 검증과정에 따라 인덱스가 홀수인 경우 3을 곱하..

[Python] SWEA 1208번 Flatten

문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 최대높이와 최저높이의 인덱스를 찾아 최대 높이의 값을 최저 높이에 옮긴다. 찾은 최대높이 값은 -1, 찾은 최저 높이 값은 +1 위 과정을 움직여야하는 횟수만큼 반복 한 후, 모든 덤프 작업이 끝났을 때의 최댓값과 최솟값을 찾아 그 값의 차이를 출력한다. 코드 # 최저높이 찾기 def find_min_height(): min_height = 101 min_idx = 0 for i in range(len(box)): if box[i] < min_height: min_height = box[i] min_idx = i return min_idx # 최대..

[Python] 백준 1543번 문서 검색

문제 1543번: 문서 검색 세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한 www.acmicpc.net 입력 첫째 줄에 문서가 주어진다. 문서의 길이는 최대 2500이다. 둘째 줄에 검색하고 싶은 단어가 주어진다. 이 길이는 최대 50이다. 문서와 단어는 알파벳 소문자와 공백으로 이루어져 있다. 출력 첫째 줄에 중복되지 않게 최대 몇 번 등장하는지 출력한다. 입력 예제 ababababa aba a a a a a a a 출력 예제 2 2 문제 풀이 비교되는 문자열과 비교하는 문자열이 같다면, 비교하는 문자열의 길이만큼 인덱스를 증가시켜 탐색하고, 같지 않다면 인덱스..

[Python] SWEA 10570번 제곱 팰린드롬 수

문제 숫자의 범위가 주어질 때 그 숫자와, 그 숫자의 제곱수가 모두 팰린드롬인 수의 개수 구하기 나의 풀이 숫자의 범위까지 하나씩 탐색하면서 그 숫자가 팰린드롬일 경우 그 숫자의 제곱수 또한 팰린드롬인지 체크한 후, 팰린드롬인 경우 카운트 코드 import math n = int(input()) for tc in range(n): a,b = map(int,input().split()) cnt = 0 for i in range(a, b + 1): # 두 자리수 넘을 때 앞 뒤 팰린드롬인지 확인 str_i = str(i) palindrome = True str_len = len(str_i) if str_len == 1: palindrome = True elif str_len >= 2: for j in ran..

[Python] 백준 2304번 창고 다각형

문제 2304번: 창고 다각형 첫 줄에는 기둥의 개수를 나타내는 정수 N이 주어진다. N은 1 이상 1,000 이하이다. 그 다음 N 개의 줄에는 각 줄에 각 기둥의 왼쪽 면의 위치를 나타내는 정수 L과 높이를 나타내는 정수 H가 한 개의 www.acmicpc.net 입력 첫 줄에는 기둥의 개수를 나타내는 정수 N이 주어진다. N은 1 이상 1,000 이하이다. 그 다음 N 개의 줄에는 각 줄에 각 기둥의 왼쪽 면의 위치를 나타내는 정수 L과 높이를 나타내는 정수 H가 한 개의 빈 칸을 사이에 두고 주어진다. L과 H는 둘 다 1 이상 1,000 이하이다. 출력 첫 줄에 창고 다각형의 면적을 나타내는 정수를 출력한다. 입력 예제 7 2 4 11 4 15 8 4 6 5 3 8 10 13 6 출력 예제 98..

[Python] 백준 2477번 참외밭

문제 2477번: 참외밭 첫 번째 줄에 1m2의 넓이에 자라는 참외의 개수를 나타내는 양의 정수 K (1 ≤ K ≤ 20)가 주어진다. 참외밭을 나타내는 육각형의 임의의 한 꼭짓점에서 출발하여 반시계방향으로 둘레를 돌면서 지 www.acmicpc.net 입력 첫 번째 줄에 1m2의 넓이에 자라는 참외의 개수를 나타내는 양의 정수 K (1 ≤ K ≤ 20)가 주어진다. 참외밭을 나타내는 육각형의 임의의 한 꼭짓점에서 출발하여 반시계방향으로 둘레를 돌면서 지나는 변의 방향과 길이 (1 이상 500 이하의 정수) 가 둘째 줄부터 일곱 번째 줄까지 한 줄에 하나씩 순서대로 주어진다. 변의 방향에서 동쪽은 1, 서쪽은 2, 남쪽은 3, 북쪽은 4로 나타낸다. 출력 첫째 줄에 입력으로 주어진 밭에서 자라는 참외의 ..

[Python] 백준 17086번 아기 상어2

문제 17086번: 아기 상어 2 첫째 줄에 공간의 크기 N과 M(2 ≤ N, M ≤ 50)이 주어진다. 둘째 줄부터 N개의 줄에 공간의 상태가 주어지며, 0은 빈 칸, 1은 아기 상어가 있는 칸이다. 빈 칸과 상어의 수가 각각 한 개 이상인 입력만 www.acmicpc.net 입력 첫째 줄에 공간의 크기 N과 M(2 ≤ N, M ≤ 50)이 주어진다. 둘째 줄부터 N개의 줄에 공간의 상태가 주어지며, 0은 빈 칸, 1은 아기 상어가 있는 칸이다. 빈 칸과 상어의 수가 각각 한 개 이상인 입력만 주어진다. 출력 첫째 줄에 안전 거리의 최댓값을 출력한다. 입력 예제 5 4 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 7 4 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1..

Algorithm/BFS&DFS 2023.04.08

[Python] 백준 18405번 경쟁적 전염

문제 18405번: 경쟁적 전염 첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치 www.acmicpc.net 입력 첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치에 존재하는 바이러스의 번호가 공백을 기준으로 구분되어 주어진다. 단, 해당 위치에 바이러스가 존재하지 않는 경우 0이 주어진다. 또한 모든 바이러스의 번호는 K이하의 자연수로만 주어진다. N+2번째 줄에는 ..

Algorithm/BFS&DFS 2023.04.08

[Python] 백준 1926번 그림

문제 1926번: 그림 어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로 www.acmicpc.net 입력 첫째 줄에 도화지의 세로 크기 n(1 ≤ n ≤ 500)과 가로 크기 m(1 ≤ m ≤ 500)이 차례로 주어진다. 두 번째 줄부터 n+1 줄 까지 그림의 정보가 주어진다. (단 그림의 정보는 0과 1이 공백을 두고 주어지며, 0은 색칠이 안된 부분, 1은 색칠이 된 부분을 의미한다) 출력 첫째 줄에는 그림의 개수, 둘째 줄에는 그 중 가장 넓은 그림의 넓이를 출력하여라. 단, 그림이 하나도 없는 경우에는 가장 넓은 그림의 넓이는 0이다. 입력 예제 6 5..

Algorithm/BFS&DFS 2023.04.08

[Python] 백준 10026 적록색약

문제 로그인 www.acmicpc.net 입력 첫째 줄에 N이 주어진다. (1 ≤ N ≤ 100) 둘째 줄부터 N개 줄에는 그림이 주어진다. 출력 적록색약이 아닌 사람이 봤을 때의 구역의 개수와 적록색약인 사람이 봤을 때의 구역의 수를 공백으로 구분해 출력한다. 입력 예제 5 RRRBB GGBBB BBBRR BBRRR RRRRR 출력 예제 4 3 문제 풀이 먼저 적록색맹인 경우와 아닌 경우 두 가지로 나눠서 탐색을 진행해야 한다. 적록색맹인 경우 빨간색과 초록색을 같은 색으로 인식해야 하므로 그래프의 값이 'R'일 때 'G'로 바꿔주거나, 'G'일 때 'R'로 바꿔서 탐색을 진행한다. 아직 방문하지 않았고, 이전에 탐색한 그래프의 값과 같은 색인 경우 탐색을 진행하여 BFS/DFS를 진행한 후, 총 탐색..

Algorithm/BFS&DFS 2023.04.07