일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- Jest
- 타입 좁히기
- 이분 검색
- map
- 호이스팅
- autosize
- 리터럴 타입
- Promise
- ESlint
- React
- 공변성
- 투포인터
- 태그된 유니온
- CORS
- 결정 알고리즘
- useAppDispatch
- Cypress
- 인터섹션
- 무한 스크롤
- app router
- recoil
- webpack
- dfs
- tailwind
- RTK Query
- async/await
- SSR
- TS
- 반공변성
- CI/CD
Archives
- Today
- Total
짧은코딩
멘토링 본문
반응형
해결법
이 문제는 4중 for문을 사용해야 한다.
먼저 처음 2중 for문은 변수를 i, j의 초기값을 1로 두고 둘 다 학생 수까지 돌려야한다. 초기값을 1로 두는 이유는 i와 j가 등수로 사용되기 때문이다. 그리고 처음 2중 for문은 모든 경우의 수를 다 돌아가도록 한다.
그 다음 2중 for문은 각각 k, s로 변수를 두고 테스트 수, 학생 수로 돌려야한다. 이때 test[k][s]가 각각 i, j와 같으면 저장을 해두고 비교하면 된다. i가 멘토, j가 멘티라서 i가 j보다 작으면 count를 올려준다.
마지막에 이 count가 테스트 결과의 수와 같으면 answer++를 해주면 된다.
코드
<html>
<head>
<meta charset="UTF-8" />
<title>출력결과</title>
</head>
<body>
<script>
function solution(test) {
let answer = 0;
let m = test.length;
let n = test[0].length;
for (let i = 1; i < n; i++) {
for (let j = 1; j < n; j++) {
let count = 0;
for (let k = 0; k < m; k++) {
let mento = (menti = 0);
for (let s = 0; s < n; s++) {
if (test[k][s] === i) mento = i;
if (test[k][s] === j) menti = j;
}
if (i < j) count++;
}
if (count === m) answer++;
}
}
return answer;
}
let arr = [
[3, 4, 1, 2],
[4, 3, 2, 1],
[3, 1, 4, 2],
];
console.log(solution(arr));
</script>
</body>
</html>
반응형
'코딩테스트 with JS > 자바스크립트 알고리즘 문제풀이(인프런)' 카테고리의 다른 글
K번째 큰 수 (0) | 2022.08.21 |
---|---|
졸업 선물 (0) | 2022.08.21 |
문자열 압축 (0) | 2022.08.17 |
가장 짧은 문자거리 (0) | 2022.08.16 |
숫자만 추출 (0) | 2022.08.15 |
Comments