2021년 09월 04일
학생정보와 과목 별 점수 데이터가 들어오는데, 해당 과목에서 최고 점수와 최소 점수를 제외하고 등급 순서로 나열한다.
const grade = (arr) => {
const average =
arr.reduce((sum, currValue) => sum + currValue, 0) / arr.length;
if (average >= 90) return "A";
if (average >= 80) return "B";
if (average >= 70) return "C";
if (average >= 50) return "D";
return "F";
};
function solution(scores) {
const item = scores.map((_, arrIndex) => {
let group = scores.map((_, numIndex) => scores[numIndex][arrIndex]);
const personNum = group[arrIndex];
if (
personNum === Math.max.apply(null, group) ||
personNum === Math.min.apply(null, group)
) {
group.filter((num) => num === personNum).length === 1 &&
group.splice(arrIndex, 1);
}
return grade(group);
});
return item.join("");
}
2022년 01월 02일
회사 합병으로 기존 출퇴근과 법인카드 사용 방식이 변경되었고, 그룹웨어 페이지에 접속하여 수기 진행하는 방식으로 제공되었다. 그룹웨어의 출퇴근 방식은 PC로만 제공되어서 `모바일로 출퇴근이 불가능`했고, 노트북을 회사에 두고 다니는 사람들은 퇴근을 누르지않아 `회사로 복귀하는 상황이 지속적으로 발생`했다. 또한 법인카드 사용내역 등록 방식이 복잡해지면서 혼란이 가중되고 `직원들이 불편함을 호소`했다. 기존처럼 모바일로 출퇴근한다면 생산성이 올라가지 않을까하여 그룹웨어와 통신하는 웹페이지를 기획했다. ## 초기버전 프론트는 `Next.js로 Vercel로 배포`하였으며, 백엔드는 `Node.js`로 구성했다. 백엔드는 서버에 배포했는데, `AWS Lightsail + Ubuntu 환경에 nginx`를 붙였다. `SSH 셋팅`을 진행하고 `PM2`로 서비스를 관리했다. [( 참고 )](https://minhyeong-jang.github.io/2022/05/07/lightsail-server) 초기버전에서는 `출퇴근 기능과 법인카드 사용내역`을 포맷에 맞게 등록해주는 기능을 구현했다. 사이트에서는 항상 로그인 계정을 입력받고 그룹웨어와 통신하여 데이터를 가져온다. 출퇴근과 법인카드는 직원들이 `가장 많이 접근하는 메뉴`이기 때문에 채널에 오픈 당시 많은 환영을 받았다. ## 기능 업그레이드 5월 포괄임금제 정책이 변경되면서 출퇴근 기록이 중요해졌고, 유저에게 더 의미있는 정보를 제공해보았다. 다양한 `인사관리 프로그램을 참고`하여 어떤 정보를 제공하면 좋을까 고민하고 다음과 같이 UI를 변경했다. 메인화면에서는 `출퇴근 시간`을 UI로 명확하게...
2021년 09월 04일
N x N 크기의 2차원 배열을 시계방향으로 90도씩 회전하려 합니다. 다음은 2 x 2 크기의 2차원 배열을 시계방향으로 90도씩 회전하는 예시입니다. ```js // Example ( 2x2 ) [ [1, 2], [3, 4], ][ // After ( 1회 회전 ) ([3, 1], [4, 2]) ][ // Example ( 2x2 ) ([1, 2], [3, 4]) ][ // After ( 2회 회전 ) ([4, 3], [2, 1]) ][ // Example ( 3x3 ) ([4, 1, 2], [7, 3, 4], [3, 5, 6]) ][ // After ( 3회 회전 ) ([2, 4, 6], [1, 3, 5], [4, 7, 3]) ]; ``` ## 소스코드 > !! 정답제출 후 업데이트하지 않은 코드여서 안돌아갈 수 있어요! ```js const rotateMatrix = (matrix, r) => { if (!r) return matrix; let temp = new Array(matrix.length) .fill(0) .map(() => new Array(matrix.length).fill(0)); for (let i = 0; i { return r % 4 ? rotateMatrix(matrix, r % 4) : matrix; };...
2021년 09월 04일
LV2 문제 function solution(n) { if (n < 3) return `${n || ""}`; if (!(n % 3)) return `${solution(Math.floor(n / 3) - 1)}4`; else return `${solution(Math.floor(n / 3))}${n % 3}`; }