알고리즘/알고리즘_백준 72

[Python][백준] 1193. 분수찾기 / 구현 (S5)

🔗링크 :   https://www.acmicpc.net/problem/1193🗒️파이썬 코드 풀이N = int(input())count,line = 0,0while N > count + line : count = count + line line += 1if line%2 == 0: print(f"{N-count}/{line-(N-count)+1}")else: print(f"{line-(N-count)+1}/{(N-count)}") 1.  ↗  뱡향의 합이 일치하는 점을 염두한다.  2. 먼저 입력 받은 N의 줄(line)과 이전 줄의 끝 번호(count)를 알아낸다. 3. 각 줄이 짝수 or 홀수일 경우를 나눠서 출력해주면 된다. 단순히 (1) N(전체값) - 이전 줄의 끝 번호..

[Python][백준] 1149. 소수&팰린드롬 / 브루트포스, 에라토스테네스의 체 (S1)

🔗링크 :   https://www.acmicpc.net/problem/1747🗒️파이썬 코드 풀이N = int(input())lst = [0] * 2000000lst[0],lst[1] = 1,1count = 2 while count  1. 문제 내용은 깔끔하다. - 최소한의 시간 복잡도로 소수를 만들 수 있는지?- 팰린드롬을 구현 할 수 있는지 ? 2. 먼저 소수 리스트부터 만들어보자. 1. 넉넉하게 2,000,000 크기의 리스트를 만들어 준다.2. 예외 값인 0과 1의 값은 미리 채워준다.  (꼭 채워줘야함)3. count를 1씩 증가 시키며,  lst에서 count만큼의 인덱스 값이 0이면 해당 배수 1로 처리(count 값이 커질 수록 연산 기하급수적으로 감소) 3. 다음으로 팰린드롬은 간단..

[Python][백준] 1259. 팰린드롬수 / 구현,문자열 (B1)

🔗링크 :   https://www.acmicpc.net/problem/1259🗒️파이썬 코드 풀이while True: num = input() if num == "0": break if num == num[::-1]: print("yes") else: print("no") 1. 간단하게 [: : -1] 인덱싱으로 뒤집어 주면 된다.  2.펠린드롬이니까 꺼꾸로 한 값이랑 같으면 "yes" 그 외는 "no"를 출력하면 된다.  📌  문제 코멘트별로 어려운 문제는 아니다. 근데 가끔 [: : -1 ] 거꾸로 인덱싱 하는 방법을 까먹어서 포스팅 해봤다.  📚문제어떤 단어를 뒤에서부터 읽어도 똑같다면 그 단어를 팰린드롬이라고 한다. 'ra..

[Python][백준] 1987. 알파벳 / 백트래킹,DFS (G4)

🔗링크 :   https://www.acmicpc.net/problem/1987🗒️파이썬 코드 풀이R,C = map(int,input().split())lst = []for i in range(R): tmp = list(input()) lst.append(tmp)di,dj = [0,1,0,-1],[1,0,-1,0]alphabet = [0] * 26alphabet[ord(lst[0][0])-65] = 1mx = 0def dfs(i,j,count): global mx mx = max(mx,count) for k in range(4): ni,nj = i+di[k],j+dj[k] if 0 1. BFS를 먼저 생각해보았지만, 알파벳 체크 부분이 안돼서 DFS..

[Python][백준] 2661. 좋은수열 / 백트래킹 (G4)

🔗링크 :   https://www.acmicpc.net/problem/2661🗒️파이썬 코드 풀이N = int(input())def check(lst): for i in range(1,len(lst)//2+1): # 몇 개씩 확인 할 것인지 for j in range(len(lst)-i): if lst[j:j+i] == lst[j+i:j+i+i]: return False return True mn = 1e100def dfs(n,lst): # return -1로 상위 호출에서 다른 경로 탐색 제어 if not(check(lst)): return -1 global mn if ..

[Python][백준] 6603. 로또 / 백트래킹,재귀,조합 (S2)

🔗링크 :   https://www.acmicpc.net/problem/6603🗒️파이썬 코드 풀이def dfs(n,idx): if n == 6: print(*rs) return for i in range(idx,K): rs.append(lst[i]) dfs(n+1,i+1) rs.pop()while True: lst = list(map(int,input().split())) K,lst = lst[0],lst[1:] rs = [] if K == 0 : break dfs(0,0) print() 1. Itertools로 간단하게 풀 수 있지만, 라이브러리를 배제하고 풀어보자. 2. 흔한 백트래킹..