일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- git
- 노마드 코더
- 라매개발자
- margin 0 auto
- WEB2-JavaScript
- 단계별로 풀어보기
- error: ENOENT: no such file or directory
- Pull
- li 태그
- git 버전관리
- button:focus cursor: pointer; outline: none;
- 크롬웹
- border radius
- 코딩테스트
- html 끝
- 드림코딩
- 나도코딩
- max-width
- 생활코딩 WEB2-JavaScript
- HTML
- :root
- 할만한데?
- box-sizing: border-box
- calc()
- 생활코딩
- 백준
- 나도코딩 파이썬
- nav태그
- 백준 자바스크립트
- 백준 정리
- Today
- Total
코딩응애의 개발블로그
왜 틀렸다는 걸까? 백준 2562번- (해결완료!!!) 본문
해당 문제 정답으로 인정이 되는 코드
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().trim().split('\n');
const num = input.map(value => +value)
solution(num);
function solution(num) {
let max = num[0];
let cnt = 0;
for (let i = 1; i < 9; i++) {
if (max < num[i]) {
max = num[i];
cnt = i;
}
}
console.log(max);
console.log(cnt+1);
}
--------------------------------------------------------------------------------
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().split('\n');
const items = input.map(value => +value);
solution(items);
function solution(items) {
let max = 0;
let ans = 0;
for(let i=0; i<9; i++) {
if (max < items[i]) {
max = items[i];
ans = i+1;
}
}
console.log(max);
console.log(ans);
}
위에 2 코드는 정답으로 나옴 근데 내가 쓴 코드
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(__dirname + '/input.txt').toString().trim().split('\n');
const num = input.map(value => +value)
solution(num);
function solution(num) {
let max = num[0];
let cnt = 0;
for (let i = 1; i < 9; i++) {
if (max < num[i]) {
max = num[i];
cnt = i + 1;
}
}
console.log(max);
console.log(cnt);
}
는 틀렸다고 나옴 원인을 살펴 봤는데 내 코드에서 for문에 cnt에다가 +1 말고 콘솔에 cnt에 플러스 1을 해야 정답이 되는데 그게 그거 아닌가? 그리고 for문에 플러스가 원인이라면 위에 코드 2번째는 for문에 +1을 해도 정답으로 인정이 된다.
물론 for문 조건식이 좀 다르긴 하지만 그거에 영향이 있진 않을것 같고 별에 별 경우를 다 넣어가지고 제출을 해봤는데
이유를 모르겠다 tlqkf 이것때문에 2시간동안 쳐 보다가 해결이 안돼서 그냥 나중에 보면 왜 틀린건지 이해가 갈까 싶어 정리하긴 하는데 w 같음 새벽에 진짜 하.
새벽 2시 50분경 해결 완료
혹시나 나와 같은 사람이 있을까 싶어서 사람들이 해당 문제에 관해 질문을 올린걸 쭉 보고 있었는데 정말 내가
멍청했다는걸 알고 해결이 완료 됨 왜 틀렸는지
우선 반례를 들자면 입력값이
100
29
38
12
57
74
40
85
61
일때 100 1 이 나와야 정답이지만 내 코드는 100 0 이나온다. 이유는 for문 안에서 비교할때 첫번째가 제일 큰수면
그냥 빠져나오게 되는데 이 과정에서 +1을 못하게 된다. 그래서 처음에 설정한 cnt = 0 이 그대로 출력이 되서 틀렸다고
나오는거고 반면 콘솔에 플러스 1을 해준다면 이러한 경우가 있어도 콘솔 출력 할때 +1을 해주기에 틀릴 일이 없다.
진짜 모르겠으면 다른사람이 질문했던걸 보자 그래도 모르겠으면 질문을 올리자(저번에 올린적 있는데 아무도 답변안해주긴 함..)
'알고리즘 문제' 카테고리의 다른 글
백준 2941번 (for of 문) (0) | 2022.08.17 |
---|---|
백준 4673번 풀면서 새롭게 알게된점 (0) | 2022.08.06 |
코딩 테스트 대비 4주 챌린지 JS (1463, 11726, 11727, 9095) (0) | 2022.05.19 |
코딩 테스트 대비 4주 챌린지 JS(2438, 2439, 2440, 2441, 2442, 2445, 2522, 2446, 10991, 10992) (0) | 2022.05.17 |
코딩 테스트 대비 4주 챌린지 JS(11720, 11721, 2741, 2742, 2739, 1924, 8393, 10818) (0) | 2022.05.15 |