코딩 테스트/Baekjoon

문제 11382번: 꼬마 정민 첫 번째 줄에 A, B, C (1 ≤ A, B, C ≤ 1012)이 공백을 사이에 두고 주어진다. www.acmicpc.net 정답 let fs = require("fs"); let filePath = process.platform === "linux" ? "/dev/stdin" : "test.txt"; let input = fs .readFileSync(filePath) .toString() .split(" ") .map(Number) .reduce((a, b) => a + b); console.log(input);
문제 10926번: ??! 준하는 사이트에 회원가입을 하다가 joonas라는 아이디가 이미 존재하는 것을 보고 놀랐다. 준하는 놀람을 ??!로 표현한다. 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어졌을 때 www.acmicpc.net 메모 Template literals 정답 let fs = require("fs"); let filePath = process.platform === "linux" ? "/dev/stdin" : "test.txt"; let input = fs.readFileSync(filePath).toString().trim(); console.log(`${input}??!`);
문제 10869번: 사칙연산 두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오. www.acmicpc.net 메모 구조 분해 할당 정답 let fs = require("fs"); let filePath = process.platform === "linux" ? "/dev/stdin" : "test.txt"; let input = fs.readFileSync(filePath).toString().split(" ").map(Number); let [a, b] = input; console.log(a + b); console.log(a - b); console.log(a * b); console.log(Math.floor(a / b..
문제 2438번: 별 찍기 - 1 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 www.acmicpc.net 메모 for: 괄호로 감싸고 세미콜론으로 구분한 세 개의 선택식과, 반복을 수행할 문(주로 블럭문)으로 이루어져 있다. Number: 숫자를 다루기 위해 상수와 메소드를 가지고 있다. 다른 타입의 값은 Number() 함수를 사용하여 숫자로 바꿀 수 있다. String.prototype.repeat(): 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열을 반환한다. let str = ''; for (let i = 0; i < 9; i++) { str = str + i; } console.log(str); // Expected output: "012345678"..
문제 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net 메모 규칙 없이 단순 반복문을 돌리면 시간 초과가 나는 문제이다. 규칙을 찾아보니 범위가 증가할 때마다 둘러싼 방이 각 6n(6, 12, 18, 24...)씩 증가하고 있다. 단순하게 생각하면 2~7번까지는 2번 만에 이동이 가능하고, 8~19까지는 3번 만에 이동이 가능하다. 범위는 1에서 증가하는 방 만큼 계속 누적시키며 1, 7(6), 19(12), 37(18) 범위에 따른 블록 합이 입력받은 N보다 작을 때까지 반복해주면 된다. while: 참일 때 실행되는..
문제 1712번: 손익분기점 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 www.acmicpc.net 메모 Math.floor(): 주어진 숫자와 같거나 작은 정수 중에서 가장 큰 수를 반환한다. 삼항 연산자: JavaScript에서 세 개의 피연산자를 받는 유일한 연산자이다. 앞에서부터 조건문, 물음표(?), 조건문이 참(truthy)일 경우 실행할 표현식, 콜론(:), 조건문이 거짓(falsy)일 경우 실행할 표현식이 배치된다. 해당 연산자는 if...else문의 대체재로 빈번히 사용된다. 정답 let fs = require("fs"); let filePat..
문제 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net 메모 String.length: UTF-16 코드 유닛을 기준으로 문자열의 길이를 나타낸다. Math.floor(): 주어진 숫자와 같거나 작은 정수 중에서 가장 큰 수를 반환한다. 나머지(%): 왼쪽 피연산자를 오른쪽 피연산자로 나눴을 때의 나머지를 구한다. 부호는 항상 왼쪽 피연산자의 부호를 따른다. Array.prototype.fill(): 배열의 시작 인덱스부터 끝 인덱스의 이전까지 정적인 값 하나로..
문제 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 메모 Array.length: 배열의 길이를 반환한다. 반환값은 부호 없는 32비트 정수형이며, 배열의 최대 인덱스보다 항상 크다. length 속성에 값을 설정할 경우 배열의 길이를 변경한다. Array.prototype.indexOf(): 배열에서 지정된 요소를 찾을 수 있는 첫 번째 인덱스를 반환하고 존재하지 않으면 -1을 반환한다. Array.prototype.push(): 배열의 끝에 하나 이상의 요소를 추가하고, ..
문제 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 메모 크로아티아 알파벳과 일반 알파벳을 모두 합산해야 한다. while: 조건문이 참일 때 실행되는 반복문이다. 조건은 명령이 실행되기 전에 참, 거짓을 판단한다. Array.prototype.join(): 배열의 모든 요소를 연결해 하나의 문자열로 만든다. Array.prototype.slice(): 어떤 배열의 begin 부터 end 까지(end 미포함)에 대한 얕은 복사본을 새로운 배열 객체로 반환한다. 원본 배열..
문제 5622번: 다이얼 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다. www.acmicpc.net 메모 // Object의 value로 key 찾기 // 먼저 key만 배열로 바꾼다. ===> Object.keys() // 고차 배열함수 find를 사용해 해당 배열을 순회한다. // Object[key]의 값과 비교하려는 value의 값이 같으면 그 값을 반환한다. function getKeyByValue(object, value) { return Object.keys(object).find(key => object[key] === value); } 정답 let fs = require("fs"); let filePath = process..
문제 2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 www.acmicpc.net 메모 Array.prototype.map(): 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환한다. spread syntax(...): 전개 구문을 사용하면 배열이나 문자열과 같이 반복 가능한 문자를 0개 이상의 인수 (함수로 호출할 경우) 또는 요소 (배열 리터럴의 경우)로 확장하여, 0개 이상의 키-값의 쌍으로 객체로 확장시킬 수 있다. Array.prototype.reverse(): 배열의 순서를 반전한다. 첫 번째 요소는..
문제 1152번: 단어의 개수 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열 www.acmicpc.net 메모 공백("")만 있는 경우 테스트 케이스의 결과 값을 0으로 처리해야 한다. ternary operator: JavaScript에서 세 개의 피연산자를 받는 유일한 연산자이다. 앞에서부터 조건문, 물음표(?), 조건문이 참(truthy)일 경우 실행할 표현식, 콜론(:), 조건문이 거짓(falsy)일 경우 실행할 표현식이 배치된다. 해당 연산자는 if...else문의 대체재로 빈번히 사용된다. 정답 let fs = require("fs"); let..
문제 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 정답 let fs = require("fs"); let filePath = process.platform === "linux" ? "/dev/stdin" : "test.txt"; let input = fs .readFileSync(filePath) .toString() .trim() .split("") .map(x => x.toUpperCase()); let obj = {}; input.map(x => { obj[x] === undefined ? (obj[x] = 1) : obj[x]++;..
문제 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net 메모 Array.prototype.push(): 배열의 끝에 하나 이상의 요소를 추가하고, 배열의 새로운 길이를 반환한다. Array.prototype.indexOf(): 배열에서 지정된 요소를 찾을 수 있는 첫 번째 인덱스를 반환하고 존재하지 않으면 -1을 반환한다. String.fromCharCode(): UTF-16 코드 유닛의 시퀀스로부터 문자열을 생성해 반환한다. Array.prototype.join(): 배열의 모든 요소를 연결해 하나..
문제 11720번: 숫자의 합 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. www.acmicpc.net 메모 Array.prototype.reduce(): 배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환한다. String.prototype.split(): String 객체를 지정한 구분자를 이용하여 여러 개의 문자열로 나눈다. 정답 let fs = require("fs"); let filePath = process.platform === "linux" ? "/dev/stdin" : "test.txt"; let input = fs.readFileSync(filePath).toString().split..
문제 11654번: 아스키 코드 알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오. www.acmicpc.net 메모 String.prototype.charCodeAt(): 주어진 인덱스에 대한 UTF-16 코드를 나타내는 0부터 65535 사이의 정수를 반환한다. 정답 let fs = require("fs"); let filePath = process.platform === "linux" ? "/dev/stdin" : "test.txt"; let input = fs.readFileSync(filePath).toString().trim(); console.log(input.charCodeAt(0));
문제 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net 메모 더하기 할당 (+=): 오른쪽 피연산자의 값을 변수에 더한 결과를 다시 변수에 할당한다. 두 피연산자의 타입이 더하기 할당 연산자의 동작을 결정하며, 덧셈 또는 문자열 연결이 가능하다. 나머지 (%): 왼쪽 피연산자를 오른쪽 피연산자로 나눴을 때의 나머지를 구합니다. 부호는 항상 왼쪽 피연산자의 부호를 따른다. Math.floor(): 주어진 숫자와 같거나 작은 정수 중에서 가장 큰 수를 반환한다. A..
문제 4344번: 평균은 넘겠지 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. www.acmicpc.net 정답 let fs = require("fs"); let filePath = process.platform === "linux" ? "/dev/stdin" : "test.txt"; let input = fs.readFileSync(filePath).toString().split("\n"); let num1 = input.shift(); for (let i = 0; i < num1; i++) { let score = input[i].split(" ").map(Number); let num2 = score.shift(); let avg =..
문제 8958번: OX퀴즈 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수 www.acmicpc.net 메모 중첩 for문을 사용한다. 2차원 배열을 사용한다. Number(value)를 +value로 대체할 수 있다. 정답 // test.txt 5 OOXXOXXOOO OOXXOOXXOO OXOXOXOXOXOXOX OOOOOOOOOO OOOOXOOOOXOOOOX // test.js let fs = require("fs"); let filePath = process.platform === "linux" ? "/dev/stdin" : "tes..
문제 3052번: 나머지 각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다. www.acmicpc.net 메모 Set 생성자를 써서 중복 요소를 제거한다. trim을 쓰지 않으면 입력 마지막에 개행문자가 추가되어 오답으로 처리된다. 정답 let fs = require("fs"); let filePath = process.platform === "linux" ? "/dev/stdin" : "test.txt"; let remain = fs .readFileSync(filePath) .toString() .trim() .split("\n") .map(Number) .map(x => x % 42); let answer = [...new ..
카버
'코딩 테스트/Baekjoon' 카테고리의 글 목록 (2 Page)