min
[항해 99 알고리즘 주차 5일차] 본문
<회고록>
오늘 나는 항해 99 입학시험을 치렀다. 알고리즘 테스트가 정말 오랜만이라서 약간의 긴장감이 돌았다.
특히 문제 중에 상 문제가 있어서 더 당황했다.
그래서 나는 하 중 문제를 검토까지 철저하게 하고 나서 시간이 남으면 상 문제를 푸는 형식으로 전략을 잡았다.
최종적으로는 모든 문제를 풀 수 있었다. 문제를 풀고 나니 다른 사람은 어떻게 풀었는지 굉장히 궁금해졌다.
그래서 오늘은 내가 푼 문제들의 한에서 리뷰를 진행할까 한다.
1. 자연수 뒤집어 더하기(하)
<문제>
https://teamsparta.notion.site/Javascript-99eab3ea620541dd9fd308803e65d91c
<나의 풀이>
function solution(n) {
n = n.toString().split("").reverse();
let sum = n.reduce((a, b) => Number(a) + Number(b), 0);
let string = n.join("+");
return string + "=" + sum.toString();
}
<다른 사람의 풀이>
function solution(n) {
let result = ""; // 결과를 저장
let arr = n.toString().split("").reverse(); // 입력값을 문자열로 바꿔준 후, 스플릿을 통해 한 단어씩 배열로 만들어주는데, reverse 로 순서를 반전한다.
let sumVal = arr.reduce((a, b) => Number(a) + Number(b)); // reduce 를 이용해 모든 배열의 값을 더해줌
for (let i = 0; i < arr.length; i++) {
if (i == 0) {
// 첫번째 반복에 result에 값을 넣어준다.
result += `${arr[i]}`;
} else if (i < arr.length) {
// 두번째 반복부터 result 에 값을 넣어주는데 + 문자열을 추가해 넣어준다.
result += `+${arr[i]}`;
}
}
result += `=${sumVal}`; // result 에 값을 모두 함산한 값을 더해준다.
return result;
}
console.log(solution(1532576));
2. Making Triangle(중)
<문제>
https://teamsparta.notion.site/Javascript-99eab3ea620541dd9fd308803e65d91c
<나의 풀이>
function solution(star) {
let result = "";
for (let i = 1; i < star * 2; i += 2) {
for (let j = 1; j < (star * 2 - i) / 2; j++) {
result += " ";
}
for (let l = 1; l <= i; l++) {
result += "*";
}
for (let k = 1; k < (star * 2 - i) / 2; k++) {
result += " ";
}
result += "\n";
}
<다른 사람의 풀이>
const solution = (star) => {
const maxStar = 2 * (star - 1) + 1;
for (let i = 0; i < star; i++) {
let starRepeat = "*".repeat(2 * i + 1);
let blankRepeat = " ".repeat((maxStar - starRepeat.length) / 2);
console.log(blankRepeat + starRepeat + blankRepeat);
}
};
3. 양옆앞뒤 큰 수 찾기(상)
<문제>
https://teamsparta.notion.site/Javascript-99eab3ea620541dd9fd308803e65d91c
<나의 풀이>
function solution(arr1) {
let d = [[1, 0],[0, 1],[0, -1],[-1, 0]];
for (let i = 0; i < 5; i++) {
for (let j = 0; j < 5; j++) {
result = false;
for (dis of d) {
n_row = i + dis[0];
n_col = j + dis[1];
if (n_row >= 0 && n_row < 5 && n_col >= 0 && n_col < 5) {
if (arr1[i][j] <= arr1[n_row][n_col] || arr1[n_row][n_col] === "*") {
result = true;
}
}
}
if (!result) arr1[i][j] = "*";
}
console.log(arr1[i])
}
}
let arr1 = [[7, 4, 6, 5, 9],[6, 1, 3, 4, 5],[4, 8, 5, 6, 9],[1, 3, 0, 6, 4],[6, 4, 8, 1, 7]];
solution(arr1);
<다른 사람의 풀이>
function solution(arr1){
for(let i = 0; i < 5; ++i){
let line = "";
for(let j = 0; j < 5; ++j){
line += (arr1[i][j] + " ");
if(i > 0 && arr1[i][j] <= arr1[i-1][j]) continue; // 상
if(j > 0 && arr1[i][j] <= arr1[i][j-1]) continue; // 좌
if(j < 4 && arr1[i][j] <= arr1[i][j+1]) continue; // 우
if(i < 4 && arr1[i][j] <= arr1[i+1][j]) continue; // 하
line = line.slice(0, -2) + "* ";
}
console.log(line);
}
}
let arr1=[[7,4,6,5,9], [6,1,3,4,5], [4,8,5,6,9], [1,3,0,6,4], [6,4,8,1,7]];
solution(arr1)
'TIL' 카테고리의 다른 글
[WIL 항해 99 3주차] (0) | 2023.06.25 |
---|---|
[항해 99 주특기 주차 1일차] (0) | 2023.06.23 |
[항해99 프로그래밍 알고리즘 4일차] (0) | 2023.06.21 |
[항해 99 프로그래밍 알고리즘 주차 3일차] (0) | 2023.06.20 |
[항해 99 프로그래밍 알고리즘 주차 2일차] (0) | 2023.06.19 |