목록What I Learned/Algorithm (20)
우당탕탕 개발일기
📝 문제 https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net ✍🏻 풀이 옛날에 재밌게 했던 컵에 있는 물 옮겨담는 게임같은 느낌! 예제와 출력을 통해 어떤 것을 구해야하는지 파악부터 했다. 3 입력값 3은 첫째 줄에 첫 번째 장대에 쌓인 원판의 개수 N (1 ≤ N ≤ 20)을 의미한다. 이걸 세번째 장대에 옮기는 횟수와 옮긴 과정(장대 번호, 옮긴 원판 번호) 을 출력하면 된다. 7 1 3 1 2 3 2 1 3 2 1 2 3 1 3 ..
🧮 문제 https://www.acmicpc.net/problem/9184 9184번: 신나는 함수 실행 입력은 세 정수 a, b, c로 이루어져 있으며, 한 줄에 하나씩 주어진다. 입력의 마지막은 -1 -1 -1로 나타내며, 세 정수가 모두 -1인 경우는 입력의 마지막을 제외하면 없다. www.acmicpc.net 지 혼자만 냅다 신나버린 9184번 문제..🙂🔥 9184번은 *메모이제이션(Memoization)을 이용해 푸는 전형적인 동적계획법(DP, Dynamic Programing) 문제라고 한다. * 동일한 문제를 반복해야 할 경우, 한 번 계산된 결과를 저장해 두었다가 활용하는 방식으로 중복 계산을 줄이는 것 ✍🏻 풀이 입력값 1 1 1 2 2 2 10 4 6 50 50 50 -1 7 18 -1..
문제 https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 당황스러운 문제 ^^! 보자마자 코드블럭은 뒤로하고 밑의 줄글을 차근차근 읽어보기로 했다. 이제 슬슬 익숙해지는 백준의 입출력값들. 첫번째 입력값은 테스트 케이스의 총 개수, 그리고 그 개수만큼의 각 테스트 케이스들! ✍🏻 풀이 더보기 첫번째 예제의 입력값 3 // 테스트 케이스의 개수 (T) 0 1 3 입력값의 첫번째가 3이므로 총 3개의 테스트 케이스들이 따라오는 것. 예제 2번도 마찬가지! // '0이 출력되는 개수' '1이 출력되는 개수' 1 0 0 1 1 2 💡 코드 const ..
https://www.acmicpc.net/problem/11050 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 문제 👀 풀이 정수론 및 조합론 문제인 이항 계수 1. 이항계수는 말 그대로 '두 개의 항(이항)을 전개하여 계수로 나타낸 것'이다. 쉽게 말하면, (a + b)^n 을 전개하였을 때의 계수를 의미한다는 것. 이러한 이항계수를 구하는 방법은 다음과 같다. 우리 문제와 조건이 같은 첫번째의 n!/(k!*(n-k)!)를 사용하면 되겠다! 단 주의할점이 있는데 nCk에서 k가 0일때는 1을 반환하므로 k가 0이나 1일때 1을 반환하도록 해주어야한다. 예제를 들어 설명을 하자면,..
뭔가 괄호가 우다다다 쏟아져서 살짝 혼미했지만 잘 읽어보니 문제자체는 이해하기가 쉬웠다. 괄호가 여는 괄호[`(`]와 닫는 괄호[`)`]가 짝에 맞게 구성되어있으면 즉, `( )`형태이면 VPS가 되는 것. 짝이 맞는 VPS안에 VPS가 있으면 그것도 VPS가 된다는 말! 문제를 통해 `(`와 `)`의 개수가 동일하면 VPS가 되는 것은 쉽게 알 수 있었지만, 이 문제의 주제인 스택으로 구현하는 방법이 고민되었다. 💡답안 let fs = require('fs'); let input = fs.readFileSync('/dev/stdin').toString().split('\n'); const Cnt = Number(input[0]); // T // i번째 줄의 괄호들 정리 //0번째는 T이므로(=Cnt) ..