[Programmers] 코딩테스트
[Day 17] 문자열, 수학, 조건문, 배열, 사칙연산
문무스
2022. 11. 8. 15:08
숫자 찾기
문제 설명:
정수 num과 k가 매개변수로 주어질 때, num을 이루는 숫자 중에 k가 있으면 num의 그 숫자가 있는 자리 수를 return하고 없으면 -1을 return 하도록 solution 함수를 완성해보세요.
제한사항:- 0 < num < 1,000,000
- 0 ≤ k < 10
- num에 k가 여러 개 있으면 가장 처음 나타나는 자리를 return 합니다.
findIndex 사용 작성한 코드:
function solution(num, k) {
var numStr = num.toString(); // 정수를 문자열로 변경하고
var newArr = Array.from(numStr); // 문자열을 배열로 변경
var kStr = k.toString(); // 정수를 문자열로 변경
function findK(e){ // k와 같은 문자가 있는지를 확인하는 함수
if(e === kStr) return true; // 만약 배열 중 k와 동일한 문자가 있으면 true 해당 인덱스 전달, 없으면 -1 전달
}
var findIndx = newArr.findIndex(findK); // 찾은 인덱스 값
if(findIndx === -1){ // 확인 결과 동일한 문자가 없어서 -1로 전달된 경우
return -1; // -1을 반환
} else { // 그 이외의 경우(동일한 문자가 있어서 해당 인덱스 값이 전달되었다면)
return findIndx + 1; // 인덱스 값 +1 반환
}
}
includes 사용 작성한 코드:
function solution(num, k) {
var numStr = num.toString(); // 정수를 문자열로 변경하고
if(numStr.includes(k)){ // numStr 이 k를 포함하고 있다면
return numStr.indexOf(k) + 1; // numStr 내 k 인덱스에 +1 반환
} else { // numStr 이 k 를 포함하고 있지 않으면
return -1; // -1 반환
}
}
n의 배수 고르기
문제 설명:
정수 n과 정수 배열 numlist가 매개변수로 주어질 때, numlist에서 n의 배수가 아닌 수들을 제거한 배열을 return하도록 solution 함수를 완성해주세요.
제한사항:- 1 ≤ n ≤ 10,000
- 1 ≤ numlist의 크기 ≤ 100
- 1 ≤ numlist의 원소 ≤ 100,000
작성한 코드:
function solution(n, numlist) {
var answer = [];
var cnt = 0;
while(cnt < numlist.length){ // numlist 배열의 길이만큼 돌려서 배열 내 모든 자료 확인
if(numlist[cnt] % n === 0) { // 배열의 자료를 n으로 나눈 나머지가 0이면(배열의 자료가 n의 배수이면)
answer.push(numlist[cnt]); // answer에 해당 배열의 자료를 넣기
}
cnt++;
}
return answer;
}
자릿수 더하기
문제 설명:
정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요
제한사항:- 0 ≤ n ≤ 1,000,000
작성한 코드:
function solution(n) {
var answer = 0;
var nStr = n.toString(); // 정수 n을 문자열로 변환하고
var cnt = 0;
while(cnt < nStr.length){ // 문자열 n의 길이만큼 돌때
answer = answer + Number(nStr[cnt]); // answer에 문자열 n의 [cnt] 번째 값 누적해서 더하기
cnt++;
}
return answer;
}
OX퀴즈
문제 설명:
덧셈, 뺄셈 수식들이 'X [연산자] Y = Z' 형태로 들어있는 문자열 배열 quiz가 매개변수로 주어집니다. 수식이 옳다면 "O"를 틀리다면 "X"를 순서대로 담은 배열을 return하도록 solution 함수를 완성해주세요.
제한사항:- 연산 기호와 숫자 사이는 항상 하나의 공백이 존재합니다. 단 음수를 표시하는 마이너스 기호와 숫자 사이에는 공백이 존재하지 않습니다.
- 1 ≤ quiz의 길이 ≤ 10
- X, Y, Z는 각각 0부터 9까지 숫자로 이루어진 정수를 의미하며, 각 숫자의 맨 앞에 마이너스 기호가 하나 있을 수 있고 이는 음수를 의미합니다.
- X, Y, Z는 0을 제외하고는 0으로 시작하지 않습니다.
- -10,000 ≤ X, Y ≤ 10,000
- -20,000 ≤ Z ≤ 20,000
- [연산자]는 + 와 - 중 하나입니다.
작성한 코드:
function solution(quiz) {
var answer = [];
var cnt = 0;
var newArr =[];
var sum = 0;
while(cnt < quiz.length){
// quiz 배열의 자료를 공백을 기준으로 나눠서 배열로 반환하고
newArr = quiz[cnt].split(' ');
// 만약 인덱스 1이 + 이면 자료들을 더하고
if(newArr[1] === '+'){
sum = Number(newArr[0]) + Number(newArr[2]);
// 그 값이 인덱스 4와 같으면 O를 배열에 추가, 다르면 X를 배열에 추가
if(sum === Number(newArr[4])){
answer.push('O');
} else {
answer.push('X')
}
}
// 만약 인덱스 1이 - 이면 자료들을 빼는데
else if(newArr[1] === '-'){
sum = Number(newArr[0]) - Number(newArr[2]);
// 그 값이 인덱스 4와 같으면 O를 배열에 추가, 다르면 X를 배열에 추가
if(sum === Number(newArr[4])){
answer.push('O');
} else{
answer.push('X')
}
}
cnt++;
}
return answer;
}
출처:
https://school.programmers.co.kr/
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr