일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- wai-aria
- 프로그래머스
- 카드뉴스
- react
- TypeScript
- html&css
- 정규표현식
- 제로베이스 프론트엔드 스쿨
- programmers
- 웹접근성
- react-query
- 디자인
- leetcode
- JavaScript
- 알고리즘
- 비트연산자
- Today
- Total
記錄
[코딩테스트 입문] Day 6~10 본문
- 프로그래머스에서 제공하는 코딩테스트 입문(Lv.0) 문제들을 풀어본 내용을 일부 정리
- https://school.programmers.co.kr/learn/challenges/beginner?order=acceptance_desc&statuses=unsolved&languages=javascript
Day 6. 문자열, 반복문, 출력, 배열, 조건문
직각삼각형 출력하기
"*"의 높이와 너비를 1이라고 했을 때, "*"을 이용해 직각 이등변 삼각형을 그리려고합니다. 정수 n 이 주어지면 높이와 너비가 n 인 직각 이등변 삼각형을 출력하도록 코드를 작성해보세요.
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = [];
rl.on('line', function (line) {
input = line.split(' ');
}).on('close', function () {
//실질적인 작성 코드
for (let i=1;i<= +input[0];i++){
console.log('*'.repeat(i));
}
});
문자 반복 출력하기
문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요.
function solution(my_string, n) {
var answer = '';
answer=[...my_string].map(i=>i.repeat(n)).join('');
return answer;
}
Day 7. 문자열, 조건문, 수학, 반복문
짝수의 합
정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.
function solution(n) {
var answer = 0;
for(let i=1;i<=n;i++){
if(i%2===0) answer+=i;
}
return answer;
}
Day 8. 배열, 구현, 수학
외계행성의 나이
우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있습니다. a는 0, b는 1, c는 2, ..., j는 9입니다. 예를 들어 23살은 cd, 51살은 fb로 표현합니다. 나이 age가 매개변수로 주어질 때 PROGRAMMER-962식 나이를 return하도록 solution 함수를 완성해주세요.
function solution(age) {
var answer = '';
let ageStr=age.toString();
answer=[...ageStr].map(i=>String.fromCharCode('a'.charCodeAt(0) + +i)).join('');
//age를 string으로 변환>배열로 변환>각 아이템을 a를 0으로부터 시작해서
//b=1,c=2 이렇게 되게 만들고 다시 string으로
return answer;
}
/*
* fromCharCode: 문자를 유니코드값으로 변환해주는 메소드
* charCodeAt: index에 해당하는 문자의 unicode 값을 리턴하는 메소드
=> 본래 a의 유니코드값은 97이지만 charCodeAt으로 0부터 시작하게 했기 때문에
a=0, b=1, c=2,....로 변환됨
*/
진료 순서 정하기
외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 emergency가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 return하도록 solution 함수를 완성해주세요.
function solution(emergency) {
var answer = [];
//응급도가 높은 순서대로 진료 순서를 정한 배열
//정렬한 배열과 정렬하지 않은 배열의 index를 비교한 결과 출력
let sortArr = [...emergency].sort((a, b) => b - a);
//기존 배열 영향 주지 않게끔 처리
answer=emergency.map(i=>sortArr.findIndex(j=>j===i)+1)
return answer;
}
순서쌍의 개수
순서쌍이란 두 개의 숫자를 순서를 정하여 짝지어 나타낸 쌍으로 (a, b)로 표기합니다. 자연수 n이 매개변수로 주어질 때 두 숫자의 곱이 n인 자연수 순서쌍의 개수를 return하도록 solution 함수를 완성해주세요.
function solution(n) {
var answer = 0;
//1 2 4 5 10 20 1,2,2^2,5*2,5*2^2
//a*b=n인 순서쌍의 개수
let arr=[];
for (let i=1;i<=n;i++){
if (n%i===0) arr.push(i);
answer=arr.length
}
return answer;
}
Day 9. 수학, 문자열, 해시, 완전탐색, 조건문
개미군단
개미 군단이 사냥을 나가려고 합니다. 개미군단은 사냥감의 체력에 딱 맞는 병력을 데리고 나가려고 합니다. 장군개미는 5의 공격력을, 병정개미는 3의 공격력을 일개미는 1의 공격력을 가지고 있습니다. 예를 들어 체력 23의 여치를 사냥하려고 할 때, 일개미 23마리를 데리고 가도 되지만, 장군개미 네 마리와 병정개미 한 마리를 데리고 간다면 더 적은 병력으로 사냥할 수 있습니다. 사냥감의 체력 hp가 매개변수로 주어질 때, 사냥감의 체력에 딱 맞게 최소한의 병력을 구성하려면 몇 마리의 개미가 필요한지를 return하도록 solution 함수를 완성해주세요.
function solution(hp) {
var answer = 0;
//장군개미 5, 병정개미 3, 일개미 1
//24면 장군개미 4, 병정개미 1, 일개미 1
//장군개미 처리 후 나머지를 병정개미 처리, 그 나머지를 일개미가 처리
let general=Math.floor(hp/5);
let soldier=Math.floor((hp-(general*5))/3);
let ant=hp-(general*5+soldier*3);
answer=general+soldier+ant;
return answer;
}
모스부호(1)
머쓱이는 친구에게 모스부호를 이용한 편지를 받았습니다. 그냥은 읽을 수 없어 이를 해독하는 프로그램을 만들려고 합니다. 문자열 letter가 매개변수로 주어질 때, letter를 영어 소문자로 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.
모스부호는 다음과 같습니다.
morse = {
'.-':'a','-...':'b','-.-.':'c','-..':'d','.':'e','..-.':'f',
'--.':'g','....':'h','..':'i','.---':'j','-.-':'k','.-..':'l',
'--':'m','-.':'n','---':'o','.--.':'p','--.-':'q','.-.':'r',
'...':'s','-':'t','..-':'u','...-':'v','.--':'w','-..-':'x',
'-.--':'y','--..':'z'
}
function solution(letter) {
var answer = '';
let morse = {
'.-':'a','-...':'b','-.-.':'c','-..':'d','.':'e','..-.':'f',
'--.':'g','....':'h','..':'i','.---':'j','-.-':'k','.-..':'l',
'--':'m','-.':'n','---':'o','.--.':'p','--.-':'q','.-.':'r',
'...':'s','-':'t','..-':'u','...-':'v','.--':'w','-..-':'x',
'-.--':'y','--..':'z'
}
let letArr=letter.split(' ');
answer=letArr.map(i=>morse[i]).join('');
return answer;
}
//letter은 공백으로 구분하므로 공백 기준으로 split해 배열로 변환
//letter의 요소(key)->morse의 value값으로
가위 바위 보
가위는 2 바위는 0 보는 5로 표현합니다. 가위 바위 보를 내는 순서대로 나타낸 문자열 rsp가 매개변수로 주어질 때, rsp에 저장된 가위 바위 보를 모두 이기는 경우를 순서대로 나타낸 문자열을 return하도록 solution 함수를 완성해보세요.
function solution(rsp) {
var answer = '';
let victory={2:0, 0:5, 5:2}
answer=[...rsp].map(i=>victory[i]).join('');
return answer;
}
구슬을 나누는 경우의 수
머쓱이는 구슬을 친구들에게 나누어주려고 합니다. 구슬은 모두 다르게 생겼습니다. 머쓱이가 갖고 있는 구슬의 개수 balls와 친구들에게 나누어 줄 구슬 개수 share이 매개변수로 주어질 때, balls개의 구슬 중 share개의 구슬을 고르는 가능한 모든 경우의 수를 return 하는 solution 함수를 완성해주세요.

function solution(balls, share) {
var answer = 0;
//balls개의 구슬 중 share 개의 구슬을 고르는 가능한 모든 경우의 수
//팩토리얼
let fct=n=>{
return n ? n * fct(n - 1) : 1;
}
answer=Math.round(fct(balls)/(fct(balls-share)*fct(share)))
return answer;
}
Day 10. 조건문, 배열, 수학, 시뮬레이션
2차원으로 만들기
정수 배열 num_list와 정수 n이 매개변수로 주어집니다. num_list를 다음 설명과 같이 2차원 배열로 바꿔 return하도록 solution 함수를 완성해주세요.
num_list가 [1, 2, 3, 4, 5, 6, 7, 8] 로 길이가 8이고 n이 2이므로 num_list를 2 * 4 배열로 다음과 같이 변경합니다. 2차원으로 바꿀 때에는 num_list의 원소들을 앞에서부터 n개씩 나눠 2차원 배열로 변경합니다.
num_list | n | result |
[1, 2, 3, 4, 5, 6, 7, 8] | 2 | [[1, 2], [3, 4], [5, 6], [7, 8]] |
function solution(num_list, n) {
var answer = [];
//slice를 n개 단위로 반복하기
for(i=0; i<num_list.length; i+=n) {
answer.push(num_list.slice(i, i+n));
};
return answer;
}
공 던지기
머쓱이는 친구들과 동그랗게 서서 공 던지기 게임을 하고 있습니다. 공은 1번부터 던지며 오른쪽으로 한 명을 건너뛰고 그다음 사람에게만 던질 수 있습니다. 친구들의 번호가 들어있는 정수 배열 numbers와 정수 K가 주어질 때, k번째로 공을 던지는 사람의 번호는 무엇인지 return 하도록 solution 함수를 완성해보세요.
function solution(numbers, k) {
var answer = 0;
//k번째로 공을 던지는 사람의 번호(index)
answer=numbers[(k - 1) * 2 % numbers.length]
return answer;
}
배열 회전시키기
정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요.
function solution(numbers, direction) {
var answer = [];
if (direction=="right"){
let rotR=numbers.pop();
numbers.unshift(rotR);
answer=numbers;
}
else if (direction=="left"){
let rotL=numbers.shift();
numbers.push(rotL);
answer=numbers;
}
return answer;
}
'FRONTEND STUDY > Programmers' 카테고리의 다른 글
[프로그래머스] 명예의 전당(1) (0) | 2022.12.03 |
---|---|
[프로그래머스] 콜라 문제 (0) | 2022.11.27 |
[코딩테스트 입문] Day 1 ~ 5 (0) | 2022.11.26 |
[프로그래머스] 과일 장수 (1) | 2022.11.19 |
[프로그래머스] 기사단원의 무기 (1) | 2022.11.19 |