고양이와 코딩
[프로그래머스] 12월11일 ~ 12월17일 본문
12월11일
전국 대회 선발 고사
아.. 모르겠다 !! 인덱스를 가지고 값을 찾는다 ==> 이게 너무너무너무 헷갈리고 도저히 모르겠음..
익숙해지지 않아서라고 위로하고 있지만 ㅎㅎ .,, 결국 못풀었다!
구글에서 가장 이해가 잘되게 풀이하신 분걸로 제출했다
풀이
function solution(rank, attendance) {
let answer = [];
for(let i = 0; i < rank.length; i++){
if(attendance[i]) {
answer.push(rank[i]);
}
}
answer.sort((a,b) => a - b);
function Participant(idx){
return rank.indexOf(answer[idx]);
}
return 10000 * Participant(0) + 100 * Participant(1) + Participant(2);
}
저 return 부분이!! 머리로는 이렇게 해야한다는걸 알고 있는데 도저히 어떻게 해야할지 생각이 안나서.. ㅋ
Participant 함수는 answer 배열 내의 등수에 해당하는 값을 rank 배열에서 찾아서 해당 값의 인덱스를 반환한다!
문자열 정수의 합
내 풀이
function solution(num_str) {
const split_str = num_str.split('');
const answer = split_str.reduce((acc, curr) => {
return parseInt(acc) + parseInt(curr);
}, 0);
return answer;
}
두 수의 합
두 번째 예시같은 수는 int나 number로는 표현할 수 없는 큰 수기 때문에 BigInt로 사용해 주어야 한다.
내 풀이
function solution(a, b) {
var sum = BigInt(a) + BigInt(b);
return String(sum);
}
12월12일
문자열로 변환
내 풀이
function solution(n) {
return String(n);
}
이건 어떻게 다르게 풀 수 있지? 하고 다른 사람의 풀이 찾아봤는데
const solution = String
....
배열의 원소 삭제하기
내 풀이
function solution(arr, delete_list) {
const result = arr.filter(value => !delete_list.includes(value));
return result;
}
부분 문자열인지 확인하기
내 풀이
function solution(my_string, target) {
return my_string.includes(target) ? 1 : 0;
}
12월14일
꼬리 문자열
내 풀이
function solution(str_list, ex) {
var answer = '';
let filtered_list = str_list.filter(item => !item.includes(ex));
answer = filtered_list.join('');
return answer;
}
12월14일
주사위 게임1
내 풀이
function solution(a, b) {
var answer = 0;
if (a % 2 !== 0 && b % 2 !== 0){
return a*a + b*b;
} else if (a % 2 !== 0 && b % 2 === 0 || a % 2 === 0 && b % 2 !== 0){
return 2 * (a + b)
} else {
return Math.abs(a - b)
}
}
날짜 비교하기
내 풀이
function solution(date1, date2) {
const [year1, month1, day1] = date1;
const [year2, month2, day2] = date2;
const date_1 = new Date(year1, month1 - 1, day1);
const date_2 = new Date(year2, month2 - 1, day2);
return date_1 < date_2 ? 1 : 0;
}
날짜로 변환해주는 함수가 있을 것 같아서 찾아봤다. new Date를 사용해서 배열 안의 요소들을 날짜로 변환 해줄수 있었는데
더 짧게 풀 수 있을 것 같아서 다른 풀이도 봤다 ㅎㅎ
다른 사람의 풀이
const solution = (date1, date2) => new Date(date1) < new Date(date2) ? 1 : 0
커피 심부름
내 풀이
function solution(order) {
var answer = 0;
order.forEach((menu) => {
if (menu === "anything" || menu.includes("americano")){
answer += 4500;
} else {
answer += 5000
}
})
return answer;
}
뭐 말이 많은데 그냥 가격에 집중하자
그림 확대
내 풀이
function solution(picture, k) {
var answer = [];
picture.forEach((str) => {
let strTemp = '';
for (let i = 0; i < str.length; i++) {
strTemp += str[i].repeat(k);
}
for (let j = 0; j < k; j++) {
answer.push(strTemp);
}
});
return answer;
}
12월15일
조건에 맞게 수열 변환하기 3
내 풀이
function solution(arr, k) {
return k % 2 !== 0 ? arr.map(num => num * k) : arr.map(num => num + k);
}
12월16일
l로 만들기
내 풀이
function solution(myString) {
const splitStr = myString.split('');
let answer = [];
splitStr.forEach((alphabet) => {
if (alphabet > 'l') {
answer.push(alphabet);
} else {
answer.push('l');
}
});
return answer.join('');
}
다른 사람의 풀이
function solution(myString) {
return [...myString].map((v) => v < 'l' ? 'l' : v).join('');
}
const solution = myString => myString.replace(/[a-k]/g,'l')
특별한 이차원 배열1
이차원 배열에 약하지만!! 딱 봤을때 대각선에 있는 요소들만 1이니까. ..
answer = []로 초기화 하고 for문을 사용해서 배열을 계속 추가해주면 되겠다는 생각을. .. 했다.
물론 배열에 배열이 추가되는지는 지피티한테 물어봄 ㅎㅎ
내 풀이
function solution(n) {
var answer = [];
for (let i = 0; i < n; i++){
const row = Array(n).fill(0);
row[i] = 1;
answer.push(row);
}
return answer;
}
row 배열을 0으로 전부 채우고, 인덱스에 해당하는 자리만 1로 바꿔준다!
row = [1, 0, 0] 일때 answer에 추가하고 ... 이런식으로 ㅎㅎ
'javascript' 카테고리의 다른 글
[프로그래머스] 12월18일 ~ 12월25일 (0) | 2023.12.18 |
---|---|
[프로그래머스] 정수를 나선형으로 배치하기 (1) | 2023.12.17 |
[프로그래머스] 12월04일 ~ 12월10일 (0) | 2023.12.04 |
[프로그래머스] 알고리즘 12월01일 ~ 12월10일 (0) | 2023.12.01 |
[프로그래머스] 11월29일 ~ 12월03일 (0) | 2023.11.29 |