백준
-
💡문제 💁🏻♀️How to Solve 처음에 풀었던 방법은 시간초과가 났다.. 시간복잡도를 다시 생각해보니 내가 짠 로직은 O(n^2)가 발생하여 시간초과가 난다. import java.io.BufferedReader import java.io.InputStreamReader import java.util.Stack fun main() = with(BufferedReader(InputStreamReader(System.`in`))){ val input = readLine().toInt() val st = readLine().split(" ") val stack = Stack() val sb = StringBuffer() for (i in st){ stack.add(i.toInt()) } repeat(i..
[백준 문제풀기] #2493번 - 탑 with Kotlin💡문제 💁🏻♀️How to Solve 처음에 풀었던 방법은 시간초과가 났다.. 시간복잡도를 다시 생각해보니 내가 짠 로직은 O(n^2)가 발생하여 시간초과가 난다. import java.io.BufferedReader import java.io.InputStreamReader import java.util.Stack fun main() = with(BufferedReader(InputStreamReader(System.`in`))){ val input = readLine().toInt() val st = readLine().split(" ") val stack = Stack() val sb = StringBuffer() for (i in st){ stack.add(i.toInt()) } repeat(i..
2023.10.13 -
문제 😉 How to Solve 입력으로 들어오는 값이 스택 안에 push 되어 있어야 pop할수 있다. 입력으로 들어오는 값들을 arr 배열에 먼저 넣어놓은 뒤, 1부터 차례대로 스택에 넣으면서 만약 입력값(arr) 0번째 배열에 있는 값이 스택에 있다면 팝하고 입력배열의 0번째 값을 다음 번째 배열로 옮겨 계속 해서 비교해간다. 이때 스택에 푸쉬해줄 때 마다 result에 +를 넣어주고, while 조건을 만족한다면 result에 pop에 해당하는 -를 넣어준다. 스택의 모든 값들이 pop되었다면 result를 출력, 아닌경우 No를 출력한다. import java.io.BufferedReader import java.io.InputStreamReader import java.util.* import..
[백준 문제풀기] #1874번 - 스택 수열 with Kotlin문제 😉 How to Solve 입력으로 들어오는 값이 스택 안에 push 되어 있어야 pop할수 있다. 입력으로 들어오는 값들을 arr 배열에 먼저 넣어놓은 뒤, 1부터 차례대로 스택에 넣으면서 만약 입력값(arr) 0번째 배열에 있는 값이 스택에 있다면 팝하고 입력배열의 0번째 값을 다음 번째 배열로 옮겨 계속 해서 비교해간다. 이때 스택에 푸쉬해줄 때 마다 result에 +를 넣어주고, while 조건을 만족한다면 result에 pop에 해당하는 -를 넣어준다. 스택의 모든 값들이 pop되었다면 result를 출력, 아닌경우 No를 출력한다. import java.io.BufferedReader import java.io.InputStreamReader import java.util.* import..
2023.10.05 -
문제 💻 Code import java.io.BufferedReader import java.io.InputStreamReader import java.util.* fun main()= with(BufferedReader(InputStreamReader(System.`in`))){ val num = readLine().toInt() val answer = mutableListOf() repeat(num) { val lists = LinkedList() val str = readLine() val count = lists.listIterator(lists.size) //초기 listIterator 생성 str.forEach { if (it.isLetterOrDigit()) { //영어이거나 숫자인 경우 c..
[백준 문제풀기] #5397번 - 키로거 with Python문제 💻 Code import java.io.BufferedReader import java.io.InputStreamReader import java.util.* fun main()= with(BufferedReader(InputStreamReader(System.`in`))){ val num = readLine().toInt() val answer = mutableListOf() repeat(num) { val lists = LinkedList() val str = readLine() val count = lists.listIterator(lists.size) //초기 listIterator 생성 str.forEach { if (it.isLetterOrDigit()) { //영어이거나 숫자인 경우 c..
2023.10.04 -
아직 알고리즘 실력 멀었다.. 알맞은 방법으로 전혀 접근하지 못했다ㅠ🤦🏻♀️ 문제 🙆🏻♀️ How to solve 1차 접근 fun main() { val edit = readln().toList() var cursor = edit.size var result = edit.toMutableList() val count = readln().toInt() for (i in 1..count){ val m = readln().replace(" ", "") if(m.contains("P")){ val u = m.toList() result.add(cursor, u[1]) cursor += 1 } else if(m in "D"){ if(cursor == result.size){ continue } else{ c..
[백준 문제풀기] #1406번 - 에디터 with Kotlin아직 알고리즘 실력 멀었다.. 알맞은 방법으로 전혀 접근하지 못했다ㅠ🤦🏻♀️ 문제 🙆🏻♀️ How to solve 1차 접근 fun main() { val edit = readln().toList() var cursor = edit.size var result = edit.toMutableList() val count = readln().toInt() for (i in 1..count){ val m = readln().replace(" ", "") if(m.contains("P")){ val u = m.toList() result.add(cursor, u[1]) cursor += 1 } else if(m in "D"){ if(cursor == result.size){ continue } else{ c..
2023.10.03 -
💡문제 설명 🙆🏻♀️ How I solve 33 -> 33 + 3 + 3 = 39 -> 33은 39의 생성자 1 -> 1 + 0 + 1 = 2 -> 1은 2의 생성자 1,3,5...을 만들어주는 숫자는 없다 -> 셀프넘버 1에서부터 시작하여 01 + 0 + 1 = 2, 02 + 0 +2 =4 이런식으로 생성자의 값을 하나씩 늘려가면서 생성자가 있는 숫자들을 찾을 수 있다. 내가 생각한 방법은 배열에 1부터 10000까지의 숫자를 넣고, 생성자를 하나씩 늘려가면서 생성자가 있는 숫자들을 리스트에서 제거하는 것이였다. result = [] for i in range(10000): result.append(i) # a가 9972이면 9999 for i in range(9973): sum = 0 if i < ..
[백준 알고리즘] #4673번 - 셀프넘버 with Python💡문제 설명 🙆🏻♀️ How I solve 33 -> 33 + 3 + 3 = 39 -> 33은 39의 생성자 1 -> 1 + 0 + 1 = 2 -> 1은 2의 생성자 1,3,5...을 만들어주는 숫자는 없다 -> 셀프넘버 1에서부터 시작하여 01 + 0 + 1 = 2, 02 + 0 +2 =4 이런식으로 생성자의 값을 하나씩 늘려가면서 생성자가 있는 숫자들을 찾을 수 있다. 내가 생각한 방법은 배열에 1부터 10000까지의 숫자를 넣고, 생성자를 하나씩 늘려가면서 생성자가 있는 숫자들을 리스트에서 제거하는 것이였다. result = [] for i in range(10000): result.append(i) # a가 9972이면 9999 for i in range(9973): sum = 0 if i < ..
2023.06.11 -
🙆🏻♀️ How to solve 다이나믹 프로그래밍 문제이다. 길이가 1인 계단 수 = 1,2,3,4,5,6,7,8,9 9개 길이가 2인 계단 수 = 10, 21,(12,32),(23,43),(34, 54), (45, 65), (56,76), (67,87), (78,98) , 89 17개 길이가 3인 계단 수 = 210, (321, 121), (212,312,232,432), (123, 323, 343, 543) .... 문제를 풀 때 일의 자리수에 올 수 있는 숫자는 0~9까지이다. 가장 뒤에 오는 숫자 = 0 dp[자릿수][0] = dp[자릿수 - 1][1] 가장 뒤에 오는 숫자 = 1~8 dp[자릿수][가장 뒤에 오는 숫자] = dp[자릿수 - 1][가장 뒤에 오는 숫자 - 1] + dp[자릿수 ..
[백준 문제풀기] #10844번 - 쉬운 계단 수 with Python🙆🏻♀️ How to solve 다이나믹 프로그래밍 문제이다. 길이가 1인 계단 수 = 1,2,3,4,5,6,7,8,9 9개 길이가 2인 계단 수 = 10, 21,(12,32),(23,43),(34, 54), (45, 65), (56,76), (67,87), (78,98) , 89 17개 길이가 3인 계단 수 = 210, (321, 121), (212,312,232,432), (123, 323, 343, 543) .... 문제를 풀 때 일의 자리수에 올 수 있는 숫자는 0~9까지이다. 가장 뒤에 오는 숫자 = 0 dp[자릿수][0] = dp[자릿수 - 1][1] 가장 뒤에 오는 숫자 = 1~8 dp[자릿수][가장 뒤에 오는 숫자] = dp[자릿수 - 1][가장 뒤에 오는 숫자 - 1] + dp[자릿수 ..
2023.06.06 -
💁🏻♀️ How do I thought dfs나 bfs로 풀어야할 것 같다는 느낌은 직감적으로 들었다. 하지만 각 x,y를 입력받아 2차원 배열에 양방향으로 넣어서 풀어야한다는 생각까지밖에 그치지 않았다. 🙆🏻♀️ How to solve Dfs 방식으로 구현하였다. 촌수를 계산해야하는 서로 다른 번호를 c,d라고 한다. 먼저 graph에 부모 자식관계를 양방향으로 넣어주고, 자식(c)에서 부모 노드(d)로 가는 방법으로 재귀탐색을 해준다. dfs를 재귀적으로 탐색하여 재귀 깊이가 깊어질때마다 num의 값을 +1씩 해주고, 현재 노드의 번호가 부모노드의 번호와 같아질 때 num 값을 출력해준다. 💻 Code import sys from collections import deque n = int(sys...
[백준 문제풀기] #2644번 - 촌수계산 문제 with Python💁🏻♀️ How do I thought dfs나 bfs로 풀어야할 것 같다는 느낌은 직감적으로 들었다. 하지만 각 x,y를 입력받아 2차원 배열에 양방향으로 넣어서 풀어야한다는 생각까지밖에 그치지 않았다. 🙆🏻♀️ How to solve Dfs 방식으로 구현하였다. 촌수를 계산해야하는 서로 다른 번호를 c,d라고 한다. 먼저 graph에 부모 자식관계를 양방향으로 넣어주고, 자식(c)에서 부모 노드(d)로 가는 방법으로 재귀탐색을 해준다. dfs를 재귀적으로 탐색하여 재귀 깊이가 깊어질때마다 num의 값을 +1씩 해주고, 현재 노드의 번호가 부모노드의 번호와 같아질 때 num 값을 출력해준다. 💻 Code import sys from collections import deque n = int(sys...
2023.06.03 -
이 문제는 bfs를 활용하여 풀었다. 👩🏻💻 코드 구현 from collections import deque m, n = map(int, input().split()) graph = [list(map(int, input().split())) for _ in range(n)] queue = deque([]) dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] day = 0 for i in range(n): for j in range(m): if graph[i][j] == 1: queue.append([i, j]) def bfs(): while queue: x, y = queue.popleft() for i in range(4): nx, ny = dx[i] + x, dy[i] + y if 0
[백준 문제풀기] #7576번 - 토마토 with Python이 문제는 bfs를 활용하여 풀었다. 👩🏻💻 코드 구현 from collections import deque m, n = map(int, input().split()) graph = [list(map(int, input().split())) for _ in range(n)] queue = deque([]) dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] day = 0 for i in range(n): for j in range(m): if graph[i][j] == 1: queue.append([i, j]) def bfs(): while queue: x, y = queue.popleft() for i in range(4): nx, ny = dx[i] + x, dy[i] + y if 0
2023.05.23