본문 바로가기
[백준] 1157 코드 1, 성공, 230726 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { public static void main(String[] args) throws IOException { Map map = new HashMap(); int count = 0; char key = ' '; BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String str = reader.readLine(); str = str.toUp.. 2023. 8. 7.
[프로그래머스] 소수 찾기(연습 문제) 코드 1, 성공, 230103 소수 구하는 문제로 처음 for문 이용해 1N까지 구간에서 소수를 찾았지만 시간초과 1n/2 구간도 마찬가지 에라토스테네스의 체 이용해 해결 에라토스테네스 특정 수(N)까지 소수 구하기 0, 1은 소수 X, 2를 시작으로 N의 최대 약수int(n ** 0.5)+1까지 해당 수의 배수들을 소수가 아닌 수로 취급, 남은 수들은 소수를 의미 EX) N = 100인 경우 2부터 10까지 차례대로 4, 6, 8 ..., 3의 경우는 6, 9, 12, 15... 식으로 배수들을 지워가면 마지막에 남은 수들은 소수를 의미한다 def solution(n): answer = 0 check = [True] * (n+1) check[0] = False check[1] = False for i .. 2023. 8. 6.
[백준] 11399 코드 1 import itertools n = int(input()) arr = list(map(int,input().split())) nPr = itertools.permutations(arr, n) result = 9999 for i in nPr: sum = 0 smallSum = 0 for j in i: smallSum += j sum += smallSum if sum < result: result = sum print(result) 실패 시간 초과 2023. 8. 6.
[백준] 1058 코드 1 import sys import heapq n = int(sys.stdin.readline()) graph = [] result = [] for i in range(n): s = str(sys.stdin.readline().rstrip()) s = s.replace(&#39;N&#39;,&#39;0&#39;) s = s.replace(&#39;Y&#39;,&#39;1&#39;) graph.append(list(map(int,s))) for i in range(n): for j in range(n): if i == j: graph[i][j] = 0 else: if graph[i][j] != 1: graph[i][j] = 999 for a in range(n): for k in range(n): f.. 2023. 8. 6.
[백준] 1003 코드 1 n = int(input()) def fibonacci(n): global countOne global countZero if n == 0: countZero += 1 return 0 elif n == 1: countOne += 1 return 1 else: return fibonacci(n-1) + fibonacci(n-2) for i in range(n): countOne = 0 countZero = 0 fibonacci(int(input())) print(countZero, countOne) 실패 재귀를 이용, 로직은 맞는 것 같지만 시간 초과 발생 코드 2 n = int(input()) def find_fibo(n): arrZero = [1, 0,1] arrOne = [0, 1,1] fo.. 2023. 8. 6.
[백준] 1463 처음 재귀로 모든 경우의 수 구현 재귀 깊이 제한 초과로 문제 발생 => DP 메모이제이션 기법 생각나 방식 찾아봄 코드 1 메모이제이션 기법 사용 n = int(input()) arr = [0] * (n+1) for i in range(2,n+1): arr[i] = arr[i-1] + 1 if i % 3 == 0: arr[i] = min(arr[i], arr[i//3]+1) if i % 2 == 0: arr[i] = min(arr[i], arr[i//2] + 1) print(arr[n]) 성공 위에서 언급한 것처럼 재귀로 1에서 +1, *2, *3 연산 또는 n에서 -1, //2, //3를 구현하는 것이 재귀 제한 초과를 발생시켰고 메모이제이션 기법 사용해 개선 메모이제이션에 사용된 배열 arr은 in.. 2023. 8. 6.
[백준] 9655 코드 1 n = int(input()) count = 0 while True: if n >=3: n -= 3 else: if n >= 1: n -= 1 count += 1 if n == 0: break if count % 2 != 0: print(&#39;SK&#39;) else: print(&#39;CY&#39;) 성공 특이사항 X 2023. 8. 6.
[백준] 1010 코드 1 n = int(input()) def factorial(n): num = 1 for i in range(1, n+1): num *= i return num for i in range(n): ist = list(map(int,input().split(&#39; &#39;))) print(factorial(ist[1])//(factorial(ist[0])*factorial(ist[1]-ist[0]))) 성공 구글링 참고 문제에서 조합과 순열의 원리를 알고있는지 요구하는 것 같다 참고 https://velog.io/@sung-ik-je/%EC%88%9C%EC%97%B4%EA%B3%BC-%EC%A1%B0%ED%95%A9 2023. 8. 6.
[백준] 2738 코드 1 n = list(map(int,input().split(&#39; &#39;))) arr1 = [] arr2 = [] count = 0 result = [[] for _ in range(n[0])] for i in range(n[0]): arr1.append(list(map(int,input().split(&#39; &#39;)))) for i in range(n[0]): arr2.append(list(map(int,input().split(&#39; &#39;)))) for i in range(n[0]): for j in range(n[1]): result[i].append(arr1[i][j] + arr2[i][j]) if count 2023. 8. 6.