정답 오답처음에 인수를 받는 반복문 안에 lists\[i] = a+b 라는 코드 작성하지만 lists는 이미 빈 리스트로 리스트 크기가 0으로 지정된 상태크기가 존재하지 않는 리스트이니 인덱스로 접근 불가따라서, lists.append()를 사용하여 원소들을 집어넣어
https://www.acmicpc.net/problem/15552문제Python을 사용하고 있다면, input 대신 sys.stdin.readline을 사용할 수 있다.단, 이때는 맨 끝의 개행문자까지 같이 입력받기 때문에 문자열을 저장하고 싶을 경우 .rs

문제 > 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의

처음에 작성한 코드처음에는 조건문을 2가지 경우의 수로 나누었음1) numbers\[j] != number2) numbers\[j] == number하지만 이렇게 되면 새로운 값이 배열에 더해져서 원소값이 업데이트된 경우와 그렇지 않은 경우를 구분할 수 없음.즉, 조건

최종 제출 코드 for문을 활용한 방법 말고도, max(), sum() 등의 메소드를 활용하면 더 간단하게 답을 구할 수 있음. > max()와 sum()을 활용한 코드

최종 제출 코드

최종 제출 코드📌 주의sum이나 max를 변수의 이름으로 활용하지 말 것!"{:.df}".format(변수)d - 반올림하여 소수점 d번째 자리까지 표시
백준 5597번최종 제출 코드배열 선언하는 방법나는 위와 같이 작성하였지만 아래와 같은 방법도 있음lists = \[i for i in range(1, 31)]원소 삭제하는 방법1) del a1 : 인덱스를 활용해서 삭제2) a.remove(3) : 원소 값을 활용해서
백준 11654번최종 제출 코드ord(문자) : 아스키 코드 -> 숫자chr(숫자) : 숫자 -> 아스키 코드
백준 11720번최종 제출 코드
백준 10809번최종 제출 코드처음 작성한 코드문자열을 검사한 후, 문자열에 없는 알파벳일 경우 리스트에 -1을 추가하는 코드가 틀림!위와 같이 작성하면 하나의 원소 당 a~z 모든 알파벳에 대한 검사 결과가 리스트에 저장됨두 번째로 작성한 코드위와 같이 작성하면 문자
백준 2675번 > 최종 제출한 코드 4~6줄에 걸쳐 작성한 코드를 `
백준 1157번for i in S: testord(i)-65 += 1value = max(test)lists = test.copy()lists.sort(reverse=True)if lists0==lists1: print("?")else: print(chr(test
백준 2908번최종 제출 코드✅ a.reverse() : reverse() 메소드는 리스트의 순서를 거꾸로 바꾸어줄 뿐 어떤 값도 리턴하지 않는다. 따라서 print(a.reverse()) 명령을 실행하면 None이 출력된다.✅ word = 구분자.join(list)e
최종 제출 코드 >
백준 2941번count = 0i=0while(i < len(S)): if Si:(i+3) in lists: i += 3 elif Si:(i+2) in lists: i += 2 else: i += 1 count += 1print(count)
백준 1316번for j in range(number): word = input() lists = list(word) lists.sort() result = \[] if len(set(lists))==len(lists): count +=1 else:
a, b, c = map(float, input().split())if c-b==0: print(-1)else: x = a/(c-b) if x < 0: print(-1) else: print(math.floor(x+1))c-b가 0일 경우 Zer

백준 2292번i = 1count = 1while (number > 0): number = number - i\*6 count += 1 i += 1print(count)
백준 1193번i=1while(number>i): number = number - i i += 1if i%2==0: if number == 1: print("1/{}".format(i)) else: print("{}/{}".format((1+(numb
백준 2869번a, b, v = map(int, input().split())A = v/(a-b)B = a/(a-b)print(math.ceil(A-B)+1)횟수를 5.5번, 1.25번과 같은 식으로 세는게 맞지 않다고 생각해 두 값을 연산하기 전에 각각에 올림, 내림
백준 10250번for i in range(number): h, w, n = map(int, input().split()) if n%h==0: floor = h address = n//h else: floor = n%h address = n/
백준 2775번for i in range(times): row = int(input()) col = int(input()) for i in range(1, col): for j in range(1, row+1): arrayj = arrayj-1 +
백준 2839번while(number >= 3): if (number % 5 == 0): FIVE = int(number/5) number = 0 break number = number - 3 THREE += 1if number != 0: pri
백준 10757번print(a+b)
백준 1978번 > #### 최종 제출 코드 1은 소수가 아니기 때문에 두 번째 for문에 들어가지 못해도 상관없음 그래서 처음엔 범위를 range(2, nums):로 작성 => 완전히 > #### 처음 제출한 코드 > #### 다른 사람이 작성한 코드
백준 2581번prime = \[]sum_prime = 0for i in range(start, end+1): count=0 for j in range(1, i): if i%j==0: count +=1 if count==1: prime.appe
백준 11653번def prime_check(number): for i in range(2, number+1): if number%i==0: return iwhile number >= 2: modifier = prime_check(number) nu
백준 1929번for i in range(start_num, end_num+1): check = True for j in range(2, i): if i%j==0: check = False if check==True: print(i)i의 1/2
백준 4948번number_list = list(range(2, 123456\*2+1))prime_list = \[]for i in number_list: check = True if i==1: check=False check = check_prime(i) if
시간초과
a_list=\[]b_list=\[]for i in range(a): a_list.append(list(map(int,input().split())))for j in range(a): b_list.append(list(map(int,input().split())))
백준 2566번for i in range(9): num_list.append(list(map(int, input().split())))for i in range(9): max_num = 0 for j in range(9): if num_listi > max_
백준 2750번for i in range(number): num_list.append(int(input()))num_list.sort()for i in range(number): print(num_listi)
백준 2587번for i in range(5): num = int(input()) num_list.append(num) sum += numnum_list.sort()print(sum//5)print(num_list2)
백준 25305번score.sort(reverse=True)print(scorecut-1)
백준 2751번num = int(input())num_list = \[]for i in range(num): num_list.append(int(input()))num_list.sort()for i in range(num): print(num_listi)
백준 10989번num = int(input())num_list = 0\*numfor i in range(num): num_listi=int(input())num_list.sort()for i in range(num): print(num_listi)입력값의 범위가
백준 2108번input = sys.stdin.readlinenum = int(input())num_list = \[]sum = 0count = 0for i in range(num): number = int(input()) num_list.append(number)
백준 1427번number.sort(reverse=True)result = ''for i in range(len(number)): result += numberiprint(result)
백준 11650번for i in range(number): lists.append(list(map(int, input().split())))lists.sort()for j in range(number): print(listsj,listsj)
백준 11651번input = sys.stdin.readlinenumber = int(input())lists = \[]for i in range(number): a, b = map(int, input().split()) lists.append(b,a)lists.s
백준 1181번input = sys.stdin.readlinenumber = int(input())lists = \[]for i in range(number): word = input().rstrip('\\n') lists.append((len(wor
처음 제출한 코드(오답) > #### 최종 제출 코드
백준 18870번input = sys.stdin.readlinenumber = int(input())lists = list(map(int, input().split()))lists_copy = lists:lists_copy = set(lists_copy)lists_co
백준 10872번number = int(input())print(fac(number))
백준 10870번number = int(input())print(fibo(number))
백준 25501번def count_num(): count0 += 1def recursion(s, l, r): count_num() if l >= r: return 1 elif sl != sr: return 0 else: return recursion(s, l+
2231
백준 1018번for i in range(n): arr.append(input().rstrip())for i in range(0, n-8+1): for k in range(0, m-8+1): for j in range(i, i+8):
백준 19532번for i in range(-999, 1000): for j in range(-999,1000): if (ai)+(bj)==c and (di)+(ej)==f: print(i, j)
백준 10828번input = sys.stdin.readlinen = int(input())stack = \[]for i in range(n): command = input().rstrip() if command=='pop': if len(stack) == 0
백준 9093번input = sys.stdin.readlinen = int(input())sen = \[]for i in range(n): sen.append(list(input().rstrip().split())) for j in range(len(seni)):
백준 9012번def solution(input_array): stack = \[] for i in range(len(input_array)): if input_arrayi=='(': stack.append(input_arrayi) else:
백준 1874번arr = \[] stack = \[] sign = \[]for i in range(n): ele = int(input().rstrip()) arr.append(ele)index = 0for j in range(1, n+1): stack.append
백준 1406번input = sys.stdin.readlinesentence = input().rstrip()cursor_index = len(sentence)n = int(input().rstrip())for i in range(n): command = input(
백준 10845번input = sys.stdin.readlinen = int(input().rstrip())stack = \[]size = 0front = 0back = 0for i in range(n): command = input().rstrip() if com

백준 1158번while len(arr) != 0: result.append(str(arr(k-1)%len(arr))) arr = arr(k-1)%len(arr)+1: + arr:(k-1)%len(arr)result = "<" + ", ".join(re
백준 10866번input = sys.stdin.readlinen = int(input().rstrip())dequeue = \[]for i in range(n): command = list(input().split()) if command0 == 'push_fro
백준 10799번for i in range(len(s)): if si == "(": bar += 1 else: bar -= 1 if si-1 == "(": count += bar else: count += 1print(coun
백준 17298번n = int(input())arr = list(map(int, input().split()))result = \[]for i in range(n-1): result.append(str(get_maxvalue(i+1, arr)))result.appen
백준 17299번cnt = 0nresult = -1nfor i in range(len(arr)): cnti = arr.count(arri)stack = 0for j in range(1, n): while stack and cnt\[stack-1] < cntj:
백준 1918번for i in infix: if i >= 'A' and i <= 'Z': postfix.append(i) else: if i=='(': stack.append(i) elif i in '\*/+-': while
백준 10820번 except: break
백준 6588번prime = 1\*1000001prime0 = 0prime1 = 0prime_list = \[]for i in range(2, int(1000000\*0.5)+1): if primei == 1: for j in range(i2, 1000001,
백준 17087번N, S = map(int, input().rstrip().split())arr = list(map(int, input().rstrip().split()))arr = list(set(arr))result = \[]for i in arr: result.
백준 2089번if number == 0: result.append(str(0))while number != 0: if number % -2 != 0: result.append(str(1)) number = number//-2+1 else: resu
백준 17103번prime = 0, 0 + 11000000for i in range(2, int(len(prime)\*\*0.5)+1): if primei == 1: for j in range(i2, len(prime), i): primej = 0T =
백준 1463번for i in range(2, n + 1): di = di - 1 + 1 if i % 3 == 0: di = min(di, di // 3 + 1) if i % 2 == 0: di = min(di, di // 2 + 1)print(dn)

백준 11052번for i in range(1,N+1): for k in range(1,i+1): dpi = max(dpi, dpi-k + pk)print(dpi)
백준 15990번MOD = 1000000009dp = \[0 for i in range(3) for j in range(100001)]dp1 = 1,0,0dp2 = 0,1,0dp3 = 1,1,1for i in range(4, len(dp)): dpi = (dpi-1
백준 10844번dp1 = 0,1,1,1,1,1,1,1,1,1for i in range(2, len(dp)): dpi = dpi-1 dpi = dpi-1 + dpi-1 dpi = dpi-1 + dpi-1 dpi = dpi-1 + dpi-1 dpi = dpi-1
백준 2193번dp1 = 0,1for i in range(2, len(dp)): dpi = dpi-1 + dpi-1 dpi = dpi-1n = int(input())print(sum(dpn))
백준 11053번for i in range(n) : for j in range(i) : if arrayi > arrayj : dpi = max(dpi,dpj+1)print(max(dp))
백준 14002번for i in range(n) : for j in range(i) : if arrayi > arrayj : dpi = max(dpi,dpj+1)result = \[]index = max(dp)k = len(dp)-1while index
백준 1912번for i in range(1, n): arrayi = max(arrayi-1+arrayi, arrayi)print(max(array))

백준 2225번dp = 0\*number + 1for i in range(part-1): for j in range(len(dp)): ele = 0 for k in range(j, len(dp)): ele += dpk dpj = ele%100
백준 15988번dp = 0\*(1000001)dp1 = 1dp2 = 2dp3 = 4for i in range(4, len(dp)): dpi = (dpi-3%MOD + dpi-2%MOD + dpi-1%MOD)%MODN = int(input())for k in rang
백준 1149번array = 0,0,0for j in range(n): a, b, c = map(int, input().split()) ele1 = min(array1+a, array2+a) ele2 = min(array0+b, array2+b) ele3 = m
백준 1309번n = int(input())dp = 1,1,1for j in range(n-1): ele1 = (dp1 % MOD + dp2 % MOD) % MOD ele2 = (dp0 % MOD + dp2 % MOD) % MOD ele3 = (dp0 % MOD
백준 11057번n = int(input())dp = 1\*10for i in range(n-1): dp0 = sum(dp)%MOD dp1 = sum(dp1:)%MOD dp2 = sum(dp2:)%MOD dp3 = sum(dp3:)%MOD dp4 = sum(d
백준 9465번for l in range(repeat): n = int(input().rstrip()) array = 0 for i in range(2) dp = 0,0,0 for j in range(2): arrayj = list(map(int, inpu
백준 2156번input = sys.stdin.readlineN = int(input().rstrip())array = 0\*Ndp = 0, 0, 0, 0for i in range(N): arrayi = int(input().rstrip())for j in range

백준 1932번input = sys.stdin.readlineN = int(input().rstrip())dp = 0\*Nfor i in range(N): array = list(map(int, input().split())) for j in range(len(ar
백준 11055번for i in range(1, n): for j in range(i): if arrayi > arrayj: dpi = max(arrayi + dpj, dpi)print(max(dp))
백준 11054번asc_dp = 1ndesc_dp = 1nfor i in range(1, n): for j in range(i): if arrayi > arrayj: asc_dpi = max(asc_dpj+1, asc_dpi)max_len = 0
백준 13398번dp = array:dp2 = array:for i in range(1, len(array)): dpi = max(dpi-1+arrayi, dpi) dp2i = max(dp2i-1+arrayi, dpi-1)print(max(max(dp),max(dp
백준 2133번if n%2 != 0: print(0)else: dp = 0\*(n//2) dp0 = 3 for i in range(1, n//2): ele = 0 for j in range(i-1): ele += dpj2 ele += d
백준 17404번input = sys.stdin.readlinen = int(input().rstrip())array = list(list(map(int, input().split())) for i in range(n))dp = \[0,0,0 for i in range
백준 2309번for l in range(9): arrayl = int(input())def append_element(arr, k): if k>len(array)-1: return \_arr = arr: \_arr.append(arrayk) if len
백준 3085번.(i, j)를 매개변수로 받은 경우 array\[i]\[j]와 array\[i]\[j+1]을 교환하고, 이 경우 같은 색이 연속되는 최대 길이를 구한다.인접한 열끼리 원소를 교환하는 경우 영향을 미치는 범위는 i행과 j열, j+1열이다.⇒ 매번 전체 배
백준 1476번◼ 처음에는 단순하게 if분기절 내에 적힌 코드만 작성하여 제출나타난 날짜가 주기와 일치할 경우 나눈 몫이 array\[i]와 일치하지 않고 0이 됨⇒ 조건 분기하여 각자 다른 조건검사를 하는 while문을 실행한다
백준 1107번if cnt != 0: btn_list = list(map(int, input().split())) for i in btn_list: btni = Falsedef solution(num): for i in range(1000001): ch
백준 15649번def box(arr): if len(arr) == n: result.append(arr) return for i in range(len(arr)): index = arri-1 visitedindex = True ele = a
백준 1748번def solution(number): square = 1 result = 0 while True: num = 10square - 10(square-1)print(solution(N))
def dfs(index): if len(stack) == n: print(\*stack) return if index == m: return for i in range(index, m+1):dfs(1)◼ 통과!
백준 15663번def dfs(): if len(stack) == n: ele = ' '.join(map(str, stack)) result.append(ele) return for i in range(len(array)): if visited
백준 10972번 print(-1) returnn = int(input())array = list(map(int, input().split()))comp = i for i in range(n, 0, -1)solution(array, n)◼ 바로 앞뒤의 원소가 내림차
백준 10971번min_distance = 10000000def dfs(row): global min_distance if len(stack) == n: min_distance = min(min_distance,sum(stack)) return for
백준 1759번 > #### 최종 제출 코드 ◼ 조합 만들기 문제와 유사 stack의 길이가 n과 같아졌을 때 조건(모음이 1개 이상, 자음이 2개 이상)을 만족하는지 확인 조건을 만족한 경우에만 문자열 형태로 출력
백준 14501번stack = \[]max_value = 0def dfs(index): global max_value max_value = max(max_value, sum(stack)) for i in range(index, n): if i <
◼️ 엉망진창...... 개쓰레기 코드...... 근데 일단 답은 맞음
백준 2529번max_value = '0'min_value = '9999999999'def dfs(): global max_value global min_value if len(stack) == n+2: result = ''.join(stack1:) i
백준 11723번input = sys.stdin.readlineset = False\*21def check(x): if setx: print(1) else: print(0) returndef add(x): if setx: return setx
백준 11724번n, m = map(int, input().split())graph = \[0 for i in range(n+1) for j in range(n+1)]visited = False\*(n+1)cnt = 0for i in range(m): a, b = m
백준 2667번n = int(input().rstrip())array = input().rstrip() for i in range(n)visited = \[False for i in range(n) for j in range(n)]result = \[]def solut
백준 4963번def solution(row, col): global w, h if row<0 or row>=h or col<0 or col>=w: return if arrayrow == 0: return if visitedrow == True: re
백준 2178번n, m = map(int, input().split())array = input().rstrip() for \_ in range(n)shortest_path = n\*msys.setrecursionlimit(n\*m)visited = \[False fo
백준 7576번input = sys.stdin.readlinem,n = map(int, input().split())array = \[]queue = deque()for i in range(n): row = list(map(int, input().split()))
백준 7562번dx = -2,-2,-1,-1,1,1,2,2dy = -1,1,-2,2,-2,2,-1,1repeat = int(input().rstrip())for k in range(repeat): n = int(input().rstrip()) x1, y1 = map
백준 16929번input = sys.stdin.readlinedx = -1, 1, 0, 0dy = 0, 0, -1, 1n, m = map(int, input().split())array = \[]visited = \[0 for \_ in range(m) for \_

백준 16947번input = sys.stdin.readlinen = int(input().rstrip())array = \[\[] for \_ in range(n+1)]for i in range(n): a, b = map(int, input().split()) a

백준 16964번input = sys.stdin.readlinen = int(input().rstrip())array = \[\[] for \_ in range(n+1)]for i in range(n-1): a, b = map(int, input().split())
백준 1697번n, k = map(int, input().split())def bfs(): queue = deque() queue.append(0, n) while queue:bfs()◼️ visited 리스트를 이용해 depth를 업데이트하고, 방문 이력이 있는
백준 13913번n, k = map(int, input().split())queue = deque()result = deque()visited = -1 100001parent = 0 100001start_node = nqueue.append(n)visitedn =
백준 14226번s = int(input())queue = deque()visited = \[-1 for \_ in range(1001) for \_ in range(1001)]def bfs(): visited1 = 0 queue.append(1,0) while
백준 13549번n, k = map(int,input().split())queue = deque()visited = -1 for \_ in range(100001)def bfs(): visitedn = 0 queue.append(n) while queue:prin
백준 1261번m, n = map(int,input().split())queue = deque()array = input() for \_ in range(n)visited = \[m\*n for \_ in range(m) for \_ in range(n)]dx = -1
백준 1991번queue = deque()ele_dict = dict()ind_dict = dict()ind_dict'A' = 0ele_dict0 = 'A'n = int(input())for i in range(n): parent, left, right = input
백준 2250번n = int(input().rstrip())array = dict()root = False + True\*nfor i in range(n): parent, left, right = map(int, input().split()) arrayparent

백준 11725번n = int(input().rstrip())array = dict()for i in range(1, n+1): arrayi = \[]for i in range(n-1): a, b = map(int, input().split()) arraya.ap
백준 1167번 > #### 최종 제출 코드 ◼️ 해당 코드를 참고하여 수정
백준 1967번 > #### 최종 제출 코드
백준 1339번n = int(input())for i in range(n): sentence = input() for j in range(len(sentence)): cntord(sentence\[j])-65 += 10\*\*(len(sentence)-j-1)
백준 14888번visited = 0, 0, 0, 0max_value = -1000000000min_value = 1000000000stack = \[]def calculate(value, number): if stack-1 == 0: return value +
백준 14225번def dfs(index): if stack: resultsum(stack) = 1 for i in range(index, n): if not visitedi: stack.append(arrayi) visitedi = 1
백준 15658번max_value = -1e9min_value = 1e9def dfs(index, value, plus, minus, multiple, divide): global max_value, min_value index += 1 if index == n:
백준 16198번total = 0def dfs(value, lists): global total total = max(total, value) for i in range(1, len(lists)-1): front = listsi-1 rear = list
백준 2580번 rstart = row//3 cstart = col//3 row_arr = 010 col_arr = 010 square_arr = 0\*10 for i in range(9): row_arr\[matrixrow] = 1 if row_ar
백준 1987번dx = 0,0,1,-1dy = -1,1,0,0visited = 0\*26visited\[ord(array0)-65] = 1count = 0def dfs(x, y, cnt): global count count = max(count, cnt) for
백준 1062번input = sys.stdin.readlineword_list = \[]start = 4end = -4words, n = map(int, input().split())for i in range(words): word_list.append(input()
백준 13460번.n, m, matrix 값을 입력받는다R과 B 구슬의 좌표를 파악하기 위한 변수 선언구슬의 좌표가 업데이트 되었는지 파악하기 위한 변수 ru, bu 선언(조금이라도 실행시간을 줄이기 위해)행을 입력받은 후 구슬의 좌표를 입력받은 적 없으면 해당 구슬의
백준 12100번문제 자체는 그렇게 어렵지 않은 것 같기도 한데, 구현하는 부분에서 포인트를 한 두 개씩 놓치기 쉬운것 같다.인접한 값들 말고도 합쳐질 수 있다는 점⇒ 4 4 0 0 0의 경우 8 0 0 0 0으로 올바르게 합쳤으나⇒ 4 0 0 0 4의 경우 왼쪽으로
백준 16928번ladder와 snake는 딕셔너리를 활용하여 값을 입력받는다bfs탐색에서 주사위의 눈만큼 인덱스를 더해가며,1) 인덱스가 ladder에 속하는지 검사2) 인덱스가 snake에 속하는지 검사해서 해당하는 값에 따라 index를 업데이트(여기서 혹시 sn
백준 9019번문제의 로직은 어렵지 않으나, 방문 체크를 해주지 않으면 메모리 초과가 발생함※ 방문 체크를 해줘도 Python3에서는 시간 초과가 발생한다PyPy3로만 통과 가능input = sys.stdin.readlinedef d(n): n \*= 2 retur

백준 14502번BFS로 풀어야함을 알고 있지만 문제를 풀면서도 시간초과에 대한 두려움이 엄습해옴..쓰읍.. 이거 시간초과 날거같은데... 이거 시간초관데...근데 웬걸 시간초과 없이 한 번에 통과! 대박.1) 먼저 빈 칸에 벽을 세우는 과정 필요◽ 비어있는 칸들을
백준 12886번문제 자체는 어렵지 않으나 방문체크를 안 해주면 시간초과 발생a, b, c = map(int, input().split())def check(a, b, c): if a==b==c: return True return Falsedef bfs(a,

백준 2206번벽을 부수지 않은 경우와 벽을 부순 경우를 나눠서 방문체크를 해주는 것이 이 문제의 관건부순적 없는 경우는 uvisited에, 부순적 있는 경우는 bvisited에 방문 체크를 해준다.큐에서 값을 꺼낼 때마다 케이스를 3가지로 나누어서 분기한다1) 다음
백준 16946번 ✔️ 문제 풀이 ◾ > #### 최종 제출 코드 ✔️ 실행 결과

백준 14442번문제 로직 자체는 어렵지 않으며 벽 부수고 이동하기 문제와 풀이 유사그러나 계속해서 시간초과 발생⇒ 조건문에 조건을 더 추가해야 하나? 라고 생각해서 조건을 추가했으나 해결되지 않음visited를 visited\[y]\[x]\[벽 부수는 횟수]가 아닌
백준 16933번 ✔️ 문제 풀이 ◾ 함수 선언? 벽 부수고 이동하기 2와 문제는 거의 동일 밤과 낮을 체크해주는 변수를 선언하고, 이를 큐에 저장하여 벽을 부술 때 체크하는 것만 추가해주면 됨 그런데 계속해서 시간초과 발생 질문 게시판을 보니 bfs를 실행하는 부

백준 16954번8 X 8 칸의 맵이 주어지고, 맵에는 빈공간과 벽이 있다.벽은 1초가 지날 때마다 아래로 한 칸씩 떨어진다. (테트리스처럼)벽은 인덱스 범위를 벗어나면 그냥 사라진다.(0, 7)에서 시작하여 (7, 0)까지 도달할 수 있는지 확인한다.이동한 좌표에서

백준 3055번고슴도치를 움직이기 전에 물의 경로를 먼저 탐색한다bfs를 활용하여 방문하면서 몇 초에 어느 공간이 물에 젓는지를 배열에 저장한다(물의 시작점과 각 공간까지의 최소 거리를 구하는 논리)고슴도치를 bfs를 통해 움직이며 방문하려는 위치가1) 방문한 적이 없

백준 16236번 ✔️ 문제 풀이 ◾ 준비 물고기의 크기 별 개수를 저장하는 fishes 배열 생성 아기 상어의 좌표를 shark에 저장한 후, 원래 있던 곳은 방문 및 조건 체크를 하기 수월하도록 값을 0으로 바꿔준다 방문체크할 visited 배열과 먹은 물고기인

백준 6087번처음에는 방문 체크를 위한 visited 배열을 deepcopy로 큐에 삽입했는데, 채점을 돌리자마자 메모리초과 발생visited를 큐에 삽입하는 이상 메모리초과는 해결될 수 없다고 판단해서 문제풀이 방식을 변경.visited를 큐에 전달하지 않고, 3차

백준 1963번에라스토테네스의 체 활용각각의 자리수의 값을 변경해가며 소수인지 아닌지 체크소수이면서 방문한적 없는 숫자이면 dp 배열값을 변경해주고, 큐에 넣는다팝된 수가 만들려고 했던 수와 일치하면 dp값 출력primes =False, False+True\*9998f

백준 10026번케이스 분리1) R과 B와 G를 다른 색으로 인식하는 경우2) R과 G를 같은 색, B만 다른 색으로 인식하는 경우⇒ 이 둘을 한 번에 탐색할 수 있는 방법은 없다먼저 한 케이스를 탐색해주고, 이후에 다른 케이스를 탐색해야 한다.두 번째 케이스를 탐색할

백준 14395번정말 연산에 따라 bfs 탐색만 진행하면 끝이다...visited를 단순 방문체크 용도로 사용하지 않고 지금까지의 연산을 저장하는 용도로 활용수의 범위가 1 ~ 1000000000로 너무 광범위해서 visited를 배열로 선언하지 않고 딕셔너리로 선언함
백준 1931번처음에는 dfs를 사용하여 문제풀이(한 마디로 전체 탐색...)⇒ 시간초과최적해를 구하는 논리를 생각해내는 것이 핵심!for \_ in range(n): start, end = map(int, input().split()) time.append

백준 1080번뒤집기 문제를 풀 때는 뒤집고 안 뒤집고만 고려해주면 된다즉, 한 번 뒤집은 걸 또 뒤집는 순간 그 케이스는 중복이 된다!(A를 뒤집고, B를 뒤집었는데 A를 다시 뒤집으면 다른 결과가 나오지 않을까?를 걱정하지 않아도 된다)처음에는 깊이 우선 탐색으로
백준 2138번 ✔️ 문제 풀이 ◾ 그리디 알고리즘 문제의 로직은 크게 어렵지 않지만, 1번 스위치를 누를지 말지로 케이스를 나누는 것을 떠올리지 못하면 헤맬 수 있다. 두 케이스로 나눠줘야하는 이유 ⇒ 뒤집기 문제에서는 정답과 다른 원소를 발견하면 해당 원소를 기
백준 1285번각 행에 대해 조합을 생성해서 문제를 풀려고 생각했지만 시간초과가 나지 않을까? 라는 생각이들어 시도하지 않고 다른 사람의 풀이를 참고했다.그런데 결국 행을 뒤집는 논리는 동일하기에 실행시간은 큰 차이가 없다.이 문제는 비트마스킹을 활용하면 더 편리하게
백준 1202번 ✔️ 문제 풀이 ◾heapq 활용 heapq는 작은 > #### 최종 제출 코드
백준 2109번1일차에는 1개의 강연이 가능, 2일차에는 2개의 강연이 가능(두번째 입력값은 2일차에 해야한다가 아니라 2일차까지 해야한다이기 때문에 이 값이 3이어도 1일차에 강연할 수 있다)중요한건 현재 며칠이 지났는지와 강연의 개수먼저 강연의 값과 기한을 list
백준 1780번N = int(sys.stdin.readline())paper = list(map(int, sys.stdin.readline().split())) for \_ in range(N)minus, zero, one = 0, 0, 0 def solution(
백준 9251번l1 = len(s)l2 = len(e)dp = 0\*l2for i in range(l1): cnt = 0 for j in range(l2): if cnt < dpj: cnt = dpj elif si == ej: dp
백준 12919번result = 0def solution(word): global result if len(word) == len(start): for i in range(len(word)): if wordi != starti: retur

백준 1201번최종 제출 코드유일하게 알고리즘 분류의 기준을 이해할 수 없는게 그리디 알고리즘인것 같다...(이게 왜 그리디..? 그리디가 정확히 뭔데..?)처음엔 실패할걸 알면서도 dfs로 풀이했다. 그런데 역시나 테스트케이스만 돌려보는데도 실행시간이 너무 길게 걸렸