본문 바로가기

코딩테스트 뿌수기9

[백준 2747번 node.js] 피보나치 수 https://www.acmicpc.net/problem/2747 n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하기동적 프로그래밍 (Dynamic Programming - DP)큰 문제의 해답에 그보다 작은 문제의 해답이 포함되어 있을 때 프로그램의 속도를 비약적으로 향상 시킴쉽게 말해서, 메모리를 사용해서 중 복 연산을 줄이고 중복 연산을 줄여서 수행 속도를 개선한다  가장 처음에 푼것은 DP의 가장 중요한 포인트는 죄다 던져두고 지멋대로 풀었다. let num = 10;//테스트 인풋function fibonacci(n) { if(n  하지만 이 문제에서 가장 중요한 것은 반복되는연산을 다시 수행하지 않는것!!!!!!!! 우선 재귀함수를 적용했을 때 ( 직관적이지만 여전히 같은 연.. 2024. 8. 21.
[백준 7568번 node.js] 덩치 https://www.acmicpc.net/problem/7568  학생 N명의 몸무게와 키가 담긴 입력을 읽어서 각 사람의 덩치 등수를 계산하여 출력여담 코딩테스트를 꽤나 간만에 풀었더니... 매일 풀 때와 달리 시작 전부터 버벅 거렸다.  이럴때는어떻게 처리해야할지 먼저 단계적으로 적어보고 주어진 것, 요구하는 것, 필요한 로직 이렇게 나누어서 적어보면어떻게 접근해야하는지 시동이 걸리는 느낌이다.다시 코테와 친근해지기전까지는 계속 이럴 듯..  해결방법  1. 주어진 문자열에서 필요한 값 추출const inputLines = input.trim().split("\n");const peopleCount = Number(inputLines[0]); // 사람 수const people = inputLine.. 2024. 8. 12.
[백준 11047번 node.js] 동전 0 https://www.acmicpc.net/problem/11047  필요한 동전 개수의 최솟값을 구하는 프로그램 작성하기 해결방법  1. 주어진 문자열에서 필요한 값 추출let targetAmount = givenData.split('\n')[0].split(' ').map(Number)[1];let array = givenData.split('\n').map(Number).slice(1).reverse(); 2. 거꾸로 정렬되어있는 배열에서 목표금액과 배열에있는 동전들의 아이템들을 비교한다.array.reduce((acc,curr)=>{}); 3. 목표금액보다 작은 동전 아이템이 나오면!! 나누기를 실시하고 정수만 추출 acc.count = acc.count + Math.floor(acc.rem.. 2024. 6. 9.
[백준 2884번 node.js] 알람 시계 https://www.acmicpc.net/problem/2884  원래 설정되어 있는 알람을 45분 앞서는 시간으로 바꾸는 프로그램을 작성  해결과정 1. 주어진 문자열 분리 const covertedInput = input.split(' '); 2. Date생성자 적용const convertedInput = new Date(2021, 0, 1, covertedInput[0], covertedInput[1]); 3. timestamp 생성 후 계산 const offset = 45 * 60 * 1000; const caculatedTimeStamp = givenDate - offset;4. Date 형태로 포맷 const newDate = new Date(caculatedTimeStam.. 2024. 6. 9.
[백준 2908번 node.js] 상수 https://www.acmicpc.net/problem/2908  두 수가 주어졌을 때, 상수의 대답을 출력하는 프로그램을 작성  해결과정  1. 주어진 문자열을 숫자타입의 배열로 바꾼다.  배열로 바꿀때 선택자는 띄어쓰기 사용input.split(' ')2. 바꾼 배열의 숫자들을 거꾸로 정렬input.reduce((accumulator,currentValue)=>{},0) //숫자타입으로 변환하니까 0으로 설정 3. 정렬한 두 개의 숫자를 비교하고더 큰 숫자를 숫자타입으로 반환const reversedValue = Number(Array.from(currentValue).reverse().join(''));return reversedValue > accumulator ? reversedValue .. 2024. 6. 9.
[백준 : 11720번 node.js] 숫자의 합 https://www.acmicpc.net/submit/11720/79358793  N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성   해결 방법 1. 주어진 숫자를 프로그램에 사용할수있도록 쪼개기 let test = input.split('\n')[1]; 2. 주어진 숫자는  문자열이니 배열에 담자3. 합산식을 해야하니 문자열을 숫자로 변환하자let array = Array.from(String(test), Number); 4. 더하자let result = (array.reduce((accumulator, currentValue) => accumulator + currentValue, 0)); 5. 제출const fs = require('fs');const fileP.. 2024. 6. 8.
[백준 : 10988번 node.js] 팰린드롬인지 확인하기 https://www.acmicpc.net/problem/10988  첫째 줄에 팰린드롬이면 1, 아니면 0을 출력한다. 팰린드롬이란 앞으로 읽을 때와 거꾸로 읽을 때 똑같은 단어를 말한다.   해결과정 1. 주어지는 단어를 배열로 담는다 2.각 알파벳을 쪼개서 담고 , 다시 합친다 3. 주어지는 문자와 비교하여 같으면 1 리턴, 다르면 0리턴 4. 제출const fs = require('fs');const filePath = process.platform === "linux" ? '/dev/stdin' : __dirname + '/input.txt';const input = fs.readFileSync(filePath).toString().trim();function reverseString(give.. 2024. 6. 8.
[백준 : 2753번 node.js] 윤년 https://www.acmicpc.net/problem/2753 연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성  해결 과정 1. 주어진 조건 나열_year % 4 === 0 && _year % 100 !== 0) || _year % 400 2. 출력되어야 할 값 추가 _year % 4 === 0 && _year % 100 !== 0) || _year % 400 === 0 ? 1 : 0; 3. 함수로 작성function leapYearGenerator(_year){ return (_year % 4 === 0 && _year % 100 !== 0) || _year % 400 === 0 ? 1 : 0;} 4. 테스트 코드 작성const assert = require('asse.. 2024. 6. 6.
[백준 : 10172번 node.js] 개 https://www.acmicpc.net/problem/10172 콘솔로그로 귀여운 강아지를 출력하는문제고민 과정 1. 자바스크립트에 쓰이는 명령어가 있는가2. 있다면 어떻게 예외처리를 할 수 있는가?  아래처럼 냅다 콘솔로그로 찍으면 에러가 난다 ..console.log(`|\_/||q p| /}( 0 )"""\|"^"` |||_/=\\__|`);  해결 과정  1. 역슬래시 ( Backslash )  는 \\를 사용해야 한개로 출력가능,  왜냐... \로 시작하는 명령어가 있기때문에 \ 다음으로 오는 문자를 명령어로 인식함  따라서  \\ (Forward Slash)  로 입력해줌으로써 escape 2. 백틱을 사용하면 줄바꿈명령어를 굳이 안 쳐도 되지만 ... 자동 줄바꿈 기능이있는 Fo.. 2024. 6. 6.