가까운 수
정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요.
- 1 ≤ array의 길이 ≤ 100
- 1 ≤ array의 원소 ≤ 100
- 1 ≤ n ≤ 100
- 가장 가까운 수가 여러 개일 경우 더 작은 수를 return 합니다.
function solution(array, n) {
let answer = 0;
let minAbs = 99999999;
const sortedArray = array.sort((a,b) => a-b);
for(let i = 0; i < sortedArray.length; i++) {
const item = sortedArray[i];
if(minAbs > Math.abs(n - item)) {
minAbs = Math.abs(n - item);
answer = item;
}
}
return answer;
}
369게임
머쓱이는 친구들과 369게임을 하고 있습니다. 369게임은 1부터 숫자를 하나씩 대며 3, 6, 9가 들어가는 숫자는 숫자 대신 3, 6, 9의 개수만큼 박수를 치는 게임입니다. 머쓱이가 말해야하는 숫자 order가 매개변수로 주어질 때, 머쓱이가 쳐야할 박수 횟수를 return 하도록 solution 함수를 완성해보세요.
- 1 ≤ order ≤ 1,000,000
function solution(order) {
let answer = 0;
const stringOrder = String(order);
for(let i = 0; i < stringOrder.length; i++) {
const item = stringOrder[i];
if(item === '3' || item === '6' || item === '9') answer += 1;
}
return answer;
}
// 다른 사람의 풀이
function solution(order) {
let answer = [...order.toString().matchAll(/[3|6|9]/g)].length;
return answer;
}
function solution(order) {
const mySet = new Set([3,6,9]);
return String(order).split('').filter
(num => mySet.has(Number(num))).length;
}
<다른 사람의 풀이에 대한 이해>
matchAll() 메서드 : 정규식에 따라 문자열에서 일치하는 모든 결과를 반복 가능한(iterable) 객체로 반환
filter()new Set()has()
Set 자료구조와 Match 메서드를 사용한 경우 둘 다 효율적이고 좋은 코드입니다. Set 자료구조는 검색 속도가 빠르다는 장점이 있습니다. 자료구조를 생성하고 각 요소를 Set 객체에 포함시켜 놓고 탐색을 할 때 검색 속도가 빠르다는 것이 강점입니다. Match 메서드는 정규식을 이용해 특정 패턴을 찾을 때 유용하게 사용할 수 있습니다. 그러나, 이 경우에는 간단한 검색을 하는 것이기 때문에 Set 자료구조를 사용한 것이 더 간결하고 효율적일 것입니다. 따라서, 위에서 제시한 두 코드 모두 효율적이고 좋은 코드입니다. 개발자의 선호에 따라 선택하면 됩니다. - open Ai
암호 해독
군 전략가 머쓱이는 전쟁 중 적군이 다음과 같은 암호 체계를 사용한다는 것을 알아냈습니다.
- 암호화된 문자열 cipher를 주고받습니다.
- 그 문자열에서 code의 배수 번째 글자만 진짜 암호입니다.
문자열 cipher와 정수 code가 매개변수로 주어질 때 해독된 암호 문자열을 return하도록 solution 함수를 완성해주세요.
- 1 ≤ cipher의 길이 ≤ 1,000
- 1 ≤ code ≤ cipher의 길이
- cipher는 소문자와 공백으로만 구성되어 있습니다.
- 공백도 하나의 문자로 취급합니다.
function solution(cipher, code) {
let answer = '';
for(let i = code-1; i < cipher.length; i += code) {
const item = cipher[i];
answer += item;
}
return answer;
}
// 다른 사람의 풀이
function solution(cipher, code) {
return cipher.split('').filter((v,i)=>(i+1)%code===0).join('');
}
<다른 사람의 풀이에 대한 이해>
splite()
filter()
join()
대문자와 소문자
문자열 my_string이 매개변수로 주어질 때, 대문자는 소문자로 소문자는 대문자로 변환한 문자열을 return하도록 solution 함수를 완성해주세요.
- 문자열 my_string이 매개변수로 주어질 때, 대문자는 소문자로 소문자는 대문자로 변환한 문자열을 return하도록 solution 함수를 완성해주세요.
function solution(my_string) {
let answer = '';
for(let i = 0; i < my_string.length; i++) {
const ch = my_string[i];
const isCapital = ch < 'a';
isCapital ? answer += ch.toLowerCase() : answer += ch.toUpperCase();
}
return answer;
}
// 다른 사람의 풀이
function solution(my_string) {
let answer = ''
for(let i of my_string){
if(i === i.toUpperCase()){
answer += i.toLowerCase();
}else{
answer += i.toUpperCase();
}
}
return answer;
}
<다른 사람의 풀이에 대한 이해>
for ... of 반복문
참고 영상
'코딩테스트 > 프로그래머스 0단계 - 입문' 카테고리의 다른 글
프로그래머스 0단계 - Day16 문자열, 수학, 배열, 조건문 (0) | 2024.03.21 |
---|---|
프로그래머스 0단계 - Day15 문자열, 해시, 배열, 수학 (0) | 2024.03.21 |
프로그래머스 0단계 - Day13 문자열, 배열, 사칙연산, 수학, 조건문 (0) | 2024.03.20 |
프로그래머스 0단계 - Day12 문자열, 정렬, 사칙연산, 수학 (0) | 2024.03.19 |
프로그래머스 0단계 - Day11 수학, 반복문 (0) | 2024.03.19 |
댓글