728x90
백준 2583번 영역 구하기 문제 영역 구하기 문제는 빈 공간의 넓이와 갯수를 계산하여 출력하는 문제이다. 이번 문제는 BFS를 사용하면 간단히 해결할 수 있을 것 같아 BFS방식을 채택하여 해결하였다. "💡 문제 해결 아이디어 " 벽과 벽이 아닌 곳의 구분을 하기 위해 벽:1, 벽이 아닌 곳:0으로 구현하기로 정하고 문제 해결에 들어갔다. 우선 입력받은 가로, 세로의 길이를 통해 높이가 M, 너비가 N인 직사각형을 만든다. 반복문을 통한 2차원 배열 생성 방식으로 그래프를 생성하였고 각 1차원 배열의 값은 모두 0으로 채운다. 그럼 [[0,0,0,0,0,0], [0,0,0,0,0,0], ...] 과 같은 형태의 그래프가 그려진다. 그 다음 좌표 x1,y1,x2,y2값을 K번 입력받는데, 입력 받을 때마..
백준 1012번 문제 파이썬 "💡 문제 해결 아이디어" 유기농 배추 문제는 완전 탐색을 통해 해결해야하는 문제이다. 본인은 dfs를 통해 해결하였다. 0,0부터 n-1,m-1 까지 모두 돌며 값이 1인 곳(배추가 심어진 곳)을 찾는다. 지렁이는 상하좌우로 퍼져나갈 수 있기 때문에, 배추가 심어진 곳을 발견하면 그 구간에서 dfs를 돌려 인접해있는 1들을 모두 0으로 변경하고 1을 카운트한다. 이렇게 하면 인접해 있는 배추 그룹의 갯수를 전부 파악할 수 있어 지렁이가 총 몇 마리 필요한 지 구할 수 있다. "❗ 런타임 에러(RecursionError) 해결" dfs를 사용하면 편리하지만 벡준에서 지정한 기본 재귀 depth 때문에 런타임에러가 발생한다. 때문에 sys.setrecursionlimit()을 ..
백준 1181번 단어 정렬 문제입니다. https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 💡 문제 해결 아이디어 1181번 문제는 n개의 문자열을 입력받아 길이 순서대로 오름차순 정렬 후, 같은 길이의 문자열는 문자열 알파벳 순서대로 오름차순 정렬한 결과를 출력하는 문제입니다. 1. 이 문제는 같은 데이터를 받으면 안 되기 때문에 set으로 데이터를 입력받은 후 정렬을 위해 list로 변환시켜 word_list에 저장하고, 오름차순으로..
수 찾기 문제는 아래와 같은 방법으로 값을 배열에 받아 in 을 사용해 배열 안에 값이 있는지 확인해주면 해결 가능하다. 주의사항 a의 경우는 M안에 a에 해당하는 값이 있는 지 찾기 위한 용도로 사용될 것이기 때문에 a의 값을 사용할 일이 없어 set으로 받는다. 그렇지 않으면 시간 초과로 인해 문제를 해결할 수 없다. import sys input=sys.stdin.readline n = int(input()) a = set(map(int,input().split())) m = int(input()) M = list(map(int,input().split())) for i in range(len(M)): if M[i] in a: print(1) else: print(0)
1026번 보물 문제는 입력받은 n개의 A,B 배열을 알맞게 정렬하여 S = A[0] * B[0] + ... + A[n-1] * B[n-1] 의 최솟값을 구하는 문제이다. 문제를 해결하기 위해 A를 재배열 해야하지만 B는 재배열 할 수 없다. 나는 해당 문제를 A,B 모두 재배열 하지 않고 풀 수 있는 방법을 찾아 그렇게 해결했다. n = int(input()) a = list(map(int,input().split())) b = list(map(int,input().split())) s=0 for i in range(n): s+= min(a) * max(b) a.pop(a.index(min(a))) b.pop(b.index(max(b))) print(s) int형태 list로 a,b를 입력받고 a의 가..
import sys input=sys.stdin.readline stack = [] for i in range(int(input())): read = input().split() if(read[0] == "push"): stack.append(read[1]) elif(read[0] == "pop"): if(len(stack) == 0): print(-1) else: pop = stack.pop() print(pop) elif(read[0] == "top"): if(len(stack) == 0): print(-1) else: print(stack[-1]) elif(read[0] == "size"): print(len(stack)) elif(read[0] == "empty"): if(len(stack) ==..