김미정(프로그래머스)
문제 1.
문자열 my_string과 정수 num1, num2가 매개변수로 주어질 때, my_string에서 인덱스 num1과 인덱스 num2에 해당하는 문자를 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.
문제 2.
정수 배열 array가 매개변수로 주어질 때, 가장 큰 수와 그 수의 인덱스를 담은 배열을 return 하도록 solution 함수를 완성해보세요.
문제 3. 정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요.
JavaScript
복사
풀이 1.
function solution(my_string, num1, num2) {
var answer = '';
for(let i=0; i<my_string.length; i++) {
if(i === num1){
answer += my_string[num2]
} else if(i === num2){
answer += my_string[num1]
} else answer += my_string[i]
}
return answer;
풀이 1-1. <프로그래머스>
function solution(my_string, num1, num2) {
my_string = my_string.split('');
[my_string[num1], my_string[num2]] = [my_string[num2], my_string[num1]];
return my_string.join('');
}
풀이 2.
function solution(array) {
var maxVal = [0];
var maxInd = 0;
for(let i=0; i<array.length; i++){
if(maxVal<array[i]) {
maxVal = array[i];
maxInd = i;
}
}
return [maxVal, maxInd];
}
풀이 2-1. <프로그래머스>
function solution(array) {
let max = Math.max(...array);
return [max, array.indexOf(max)];
}
풀이 3.
function solution(numbers, direction) {
if(direction === 'right'){
numbers.unshift(numbers.pop());
} else if (direction === 'left'){
numbers.push(numbers.shift())
}
return numbers;
}
// unshift() 메소드는 새로운 요소를 배열의 맨 앞에 추가하고, pop() 메소드는 배열의 마지막 요소를 제거하고 반환 => 오른쪽으로 도는 거
// push() 메소드는 새로운 요소를 배열의 마지막에 추가하고, shift() 메소드는 배열의 첫 번째 요소를 제거하고 반환 => 왼쪽으로 도는 거
JavaScript
복사
이예지(프로그래머스)
문제 1.
문자열 s가 매개변수로 주어집니다. s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.
입출력 예
s result
"abcabcadc" "d"
"abdc" "abcd"
"hello" "eho"
문제 2.
이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요.
입출력 예
bin1 bin2 result
"10" "11" "101"
"1001" "1111" "11000"
JavaScript
복사
풀이 1.
function solution(s) {
var answer = '';
let list = [...s].sort();
list.forEach((item)=>{
if(list.indexOf(item) === list.lastIndexOf(item)) answer+= item;
})
return answer;
}
풀이 2.
function solution(bin1, bin2) {
return (parseInt(bin1, 2) + parseInt(bin2, 2)).toString(2);
}
JavaScript
복사
조원영(프로그래머스)
문제
숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요.
예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다.
입출력 예
t p result
"3141592" "271" 2
JavaScript
복사
풀이
function solution(t, p) {
let length = p.length;
let tArr = t.split('');
let count = 0;
for (let i = 0; i < t.length - (length - 1); i++) {
let temp = '';
for (let j = i; j < i + length; j++) {
temp += tArr[j];
}
if (parseInt(p) >= parseInt(temp)) {
count++;
}
}
return count;
}
JavaScript
복사
유하은(프로그래머스)
1. 짝수와 홀수
문1)정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요.
제한 조건
num은 int 범위의 정수입니다.
0은 짝수입니다.
풀2)
function solution(num) {
return num % 2 === 0? "Even" : "Odd";
}
JavaScript
복사
문2) 수박수박수박수박수박수?
길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.
제한 조건
n은 길이 10,000이하인 자연수입니다.
입출력 예
n return
3 "수박수"
4 "수박수박"
풀2)
function solution(n) {
let answer = '';
for(let i = 1; i <= n; i++){
if(i % 2 === 0){
answer += "박"
}
else{
answer += "수"
}
}
return answer;
}
// 원영풀이
function solution(n) {
var answer = '';
for (let i = 0; i < parseInt(n / 2); i++) {
answer += '수박';
}
if (n % 2 == 1) {
answer += '수';
}
return answer;
}
JavaScript
복사
손수민(프로그래머스)
문제 1
문자열 my_string이 매개변수로 주어질 때, 대문자는 소문자로 소문자는 대문자로 변환한 문자열을 return하도록 solution 함수를 완성해주세요.
문제 2
머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 box와 주사위 모서리의 길이 정수 n이 매개변수로 주어졌을 때, 상자에 들어갈 수 있는 주사위의 최대 개수를 return 하도록 solution 함수를 완성해주세요.
문제 3
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.
JavaScript
복사
문제 1 풀이
function solution(my_string) {
var answer = '';
for(let string of my_string){
if(string ===string.toUpperCase()){
answer+=string.toLowerCase()
}else{
answer+=string.toUpperCase()
}
}return answer
}
<예지 풀이>
function solution(my_string) {
return my_string.split("").map(v => v === v.toUpperCase() ? v.toLowerCase() : v.toUpperCase()).join('');
}
문제 2 풀이
function solution(box, n) {
let answer=1
for(let i in box){
answer *= Math.floor(box[i]/n)
}
return answer
}
<미정 풀이>
function solution(box, n) {
var answer = 1;
box.map(v => answer *= Math.floor(v/n))
return answer;
}
<예지 풀이>
function solution(box, n) {
return box.reduce((acc, cur)=>acc * Math.floor(cur/n), 1);
}
문제 3 풀이
function solution(numbers) {
numbers = numbers.sort((a, b) => b - a);
let answer= Math.max(numbers[0] * numbers[1],numbers[numbers.length-1] * numbers[numbers.length-2]);
return answer
}
문제 3 풀이 2
function solution(numbers) {
let answer=[]
for(let i=0; i<numbers.length-1; i++){
for(let j=i + 1; j<numbers.length;j++){
answer.push(numbers[i]*numbers[j])
}
}return Math.max(...answer)
}
<미정 풀이>
function solution(numbers) {
var answer=[];
for(i=0; i<numbers.length; i++){
for(j=i+1; j<numbers.length; j++){
answer.push(numbers[i]*numbers[j])
}
}
return Math.max(...answer);
}
JavaScript
복사