목록알고리즘 (29)
\(@^0^@)/
🐱👓 1. 문제 : 1157 https://www.acmicpc.net/problem/1157 ⚡ 2. 조건 및 풀이 방식? // 1. 문자들을 구분하기 위해서는, 모두 대문자로 변경. // 2. a-z까지의 배열을 생성. // 3. 알파벳들을 charCodeAt()를 사용하여 숫자로 변환하고 a(65)만큼을 뺀, // 그 숫자를 배열의 인덱스로 잡고, 1을 추가 해줌. // ex) 알파벳이 a라면 65 - 65 = 0 이므로, 인덱스 0에 1추가. // 4. indexOf()로 배열의 index max 값을 구하고, // 5. for문을 사용했던 max 값을 Math.max()로 구해서, // 6. 둘의 max 값을 비교하여, 중복이 있을 경우 "?"을 출력 // 7. 중복이 없다면, fromChar..
🐱👓 1. 문제 : 2675 https://www.acmicpc.net/problem/2675 🔥 2. 코드 및 풀이 const fs = require('fs'); const file = process.platform === 'linux' ? '/dev/stdin' : './input.txt'; let input = fs.readFileSync(file).toString().split('\n'); let caseTest = Number(input[0]); let result = ''; for (let i = 1; i
🐱👓 1. 문제 : 10809 https://www.acmicpc.net/problem/10809 🔥 2. 코드 및 풀이 const fs = require('fs'); const file = process.platform === 'linux' ? '/dev/stdin' : './input.txt'; let input = fs.readFileSync(file).toString().split('\n'); let str = input[0]; const result = []; // 아스키 코드에서 a-z는 97-122까지 97-122의 범위를 돌면서, // String.fromCharCode => 메서드를 사용해서 a-z까지의 알파벳을 생성, // str.indexOf => 배열에 해당 값이 있다면 그 값의 ..
🐱👓 1. 문제 : 11654 https://www.acmicpc.net/problem/11654 🔥 2. 코드 const fs = require('fs'); const file = process.platform === 'linux' ? '/dev/stdin' : './input.txt'; let input = fs.readFileSync(file).toString().split('\n'); let str = input[0]; console.log(str.charCodeAt(0)); 정말 오랜만에 자신 있게 후다닥 풀 수 있는 문제였다 :) 코테에 이런 것만 나온다면 자신감 빵빵하게 잘 풀 수 있을 텐데ㅠ 다른 사람도 다 푸는게 함정 아스키코드에 대해 조금 정리하고 넘어가 보자! 🤔 아스키 코드란? A..
🐱👓 1. 문제 : 4673 https://www.acmicpc.net/problem/4673 🔥 2. 풀이 + 코드 // 입력받는 값 없음 // 셀프넘버 : 생성자가 없는 수 // 33은 39의 생성자, 39는 51의 생성자, 51은 57의 생성자 // 33 => 33 + 3 + 3 = 39 => 39 + 3 + 9 + = 51 => 51 + 5 + 1 = 57 // 101은 생성자가 2개 (91과 100) // 91 => 91 + 9 + 1 = 101 , 100 => 100 + 1 + 0 + 0 = 101 // 0. 각 자리수를 더하는 함수를 만든다. // 1. 10,000개의 false를 가진 배열을 만들어서 // 2. 생성자를 갖는 숫자들을 true로 변경해준다. // 3. 그리고, 배열을 돌면..
🐱👓 1. 문제 : 1065 https://www.acmicpc.net/problem/1065 🔥 2. 풀이 + 코드 const fs = require('fs'); const file = process.platform === 'linux' ? '/dev/stdin' : './input.txt'; let input = fs.readFileSync(file).toString().split('\n'); let num = Number(input[0]); // n은 1000보다 작거나 같은 자연수인데, 1000은 한수가 아니므로 패스 // n이 한자리 일 경우 => 1부터 9까지는 수가 하나밖에 없는 등차수열 // n이 두자리 일 경우 => 10부터 99까지도 등차수열이 될 수 밖에 없음. 11, 12, 13 ..
🐱👓 1. 문제 : 3052 https://www.acmicpc.net/problem/4344 🔥 2. 풀이 + 코드 const fs = require('fs'); const file = process.platform === 'linux' ? '/dev/stdin' : './input.txt'; let input = fs.readFileSync(file).toString().trim().split('\n'); let testCase = Number(input[0]); // 1. test case의 개수를 제외 한 각 줄에서 인덱스 0 을 제외하고 모두 더한다. // 2. 그 더한 값을 그 줄의 학생 수로 나누면 ==> 그 줄의 평균 점수 // 3. 평균 점수를 그 줄의 학생의 점수와 비교해서 count..
🐱👓 1. 문제 : 3052 https://www.acmicpc.net/problem/8958 🔥 2. 풀이 + 코드 const fs = require('fs'); const file = process.platform === 'linux' ? '/dev/stdin' : './input.txt'; let input = fs.readFileSync(file).toString().trim().split('\n'); let n = Number(input[0]); // i = 1 을 해주는 이유는, 0부터 시작하면 input[0] 이어서 test case의 개수가 뜸. for (let i = 1; i
🐱👓 1. 문제 : 3052 https://www.acmicpc.net/problem/3052 🔥 2.1 Set을 이용한 풀이 const fs = require('fs'); const file = process.platform === 'linux' ? '/dev/stdin' : './input.txt'; // 입력받은 문자배열을 숫자배열로 변환, Num으로 바꿔야 공백없이 제대로 비교 가능. // trim()을 적용해야만 마지막에 공백 ''가 없음. let input = fs.readFileSync(file).toString().trim().split('\n').map(n => Number(n)); //[ 39, 40, 41, 0, 1, 2, 40, 41, 0, 1] let arr = input.map..
🐱👓 1. 문제 : 2577 https://www.acmicpc.net/problem/2577 🔥 2.1 split을 이용한 코드 const fs = require('fs'); const file = process.platform === 'linux' ? '/dev/stdin' : './input.txt'; // Num으로 바꿔야 공백없이 제대로 비교 가능. let input = fs.readFileSync(file).toString().split('\n').map(n => Number(n)); let first = input[0]; let sec = input[1]; let third = input[2]; let multi = String(first * sec * third); // 간결하게 let ..