본문 바로가기

알고리즘

[baekjoon] 2468. 안전 영역 문제 입력 출력 예제 입력, 예제 출력 노트 로직 1. 안전지역에서의 최대 높이(max_len)를 구한다. 2. 0부터 max_len까지 돌리면서 2-1. 매번 새로운 board를 가지고와서 해야함 -> deepcopy 2-2. for i in range(max_len + 1)이면 l보다 작거나 같으면 0으로 표시 2-3. bfs돌면서 1인 영역 갯수를 찾기 -> 안전영역 갯수(cnt)를 매번 구하면서 mymax에 갱신 코드 import copy N = int(input()) board = [list(map(int, input().split())) for _ in range(N)] temp = 0 for i in range(N): for j in range(N): if temp < board[i][j]:.. 더보기
[baekjoon] 2667. 단지 내 수 세기 문제 입력 예제입력, 예제 출력 로직 1. board에서 1이 나오면 그 주변을 bfs로 1인곳 확인 2. 확인한 곳의 숫자를 0으로 표시해 지나갔음을 표현, cnt += 1하면서 최종 나온 값을 result리스트에 넣어서 오름차순으로 정렬 (오름차순 안해서 틀림!) 코드 N = int(input()) board = [list(map(int, input())) for _ in range(N)] near = [(0, -1), (0, 1), (1, 0), (-1, 0)] result = [] for i in range(N): for j in range(N): if board[i][j] == 1: cnt = 1 q = [[i, j]] board[i][j] = 0 while q: x, y = q.pop(0) f.. 더보기
[programmers] 괄호 변환 문제 설명 매개변수 설명 입출력 예 로직설명 1. 균형잡힌 괄호문자열, 올바른 괄호 문자열 확인하는 함수를 만들고 2. 1~4번까지 구현하기.. (다른 사람들은 차례대로 구현하면 되는 문제라 어렵지 않다고 하셨는데 난 어려웠다,,,) 코드 # 균형잡힌 괄호 문자열 def balance(p): cnt = 0 for i in p: if i == '(': cnt += 1 else: cnt -= 1 if cnt == 0: return True return False # 올바른 괄호문자열 def correct(p): left = 0 right = 0 for i in p: if i == '(': left += 1 else: right += 1 if right > left: return False if right =.. 더보기
[programmers] 문자열 압축 문제설명 제한사항 입출력 예 로직설명 1. 앞 문자열이랑 같은 길이의 문자열이 같은지 확인 2. 단위로 자를 때마다 새로운 word문자열에 넣어서 값 비교하기 3. 각 알파벳마다 하나씩 늘려갈 때 cnt += 1해주고(word에 추가되었다면 cnt=1로 초기화) 4. cnt = 1이면 문자만 넣고, cnt != 1이면 숫자를 문자화하고 숫자랑, 문자 둘다 넣어주기 5. 앞 문자열을 다음 문자열로 바꿔줘서 계속 진행하면서 확인할 수 있도록! 코드 def solution(s): if len(s) == 1: return 1 answer = 9999999999999999999999999999999 for i in range(1, len(s) // 2 + 1): cnt = 1 word = '' front = s[.. 더보기