시간 제한 |
메모리 제한 |
제출 |
정답 |
맞힌 사람 |
정답 비율 |
2 초 |
128 MB |
6125 |
2962 |
2497 |
49.632% |
문제
민식이는 “오민식”이라는 팀이름으로 수없이 많은 로봇대회를 우승했다. 따라서 민식이의 집에는 트로피가 많다. 민식이는 트로피를 어떤 선반 위에 올려놨다. 이 선반은 민식이의 방문을 열고 들어가자마자 선반의 왼쪽이 보인다. 다른말로 하자면, 뒤의 트로피가 앞의 트로피에 가려져 있다는 말이다.
안타깝게도, 높이가 큰 트로피가 높이가 작은 트로피의 왼쪽에 있다면, 높이가 작은 트로피는 큰 트로피에 가려서 보이지 않게 된다. 트로피는 자기의 앞에 (보는 사람의 관점에서) 자기보다 높이가 작은 트로피가 있을 때만 보이게 된다. 민식이는 선반을 180도 회전시켜서 트로피가 보이는 개수를 변하게 할 수도 있다.
선반위에 올려져 있는 트로피의 높이가 주어졌을 때, 왼쪽에서 봤을 때 보이는 개수와, 오른쪽에서 봤을 때 보이는 개수를 출력하는 프로그램을 작성하시오.
출력
첫째 줄에 왼쪽에서 봤을 때 보이는 개수, 둘째 줄에 오른쪽에서 봤을 때 보이는 개수를 출력한다.
이 문제는 단순하게 left, right를 나눠서 풀면 쉽겠다고 생각했다
const [n, ...trophy] = require('fs').readFileSync('./input.txt').toString().split('\n').map(Number)
let leftMax = trophy[0]
let leftCnt = 1
let rightMax = trophy.at(-1)
let rightCnt = 1
for (let i = 0; i < n; i++) {
if (leftMax < trophy[i]) {
leftMax = trophy[i]
leftCnt++
}
if (rightMax < trophy.at(-i)) {
rightMax = trophy.at(-i)
rightCnt++
}
}
console.log(leftCnt)
console.log(rightCnt)
leftMax 는 왼쪽에서 max, 초기 값은 맨 왼쪽인 trophy[0]을 넣어줬다.
rightMax 는 오른쪽에서의 max, 초기 값은 맨 오른쪽 trophy.at(-1)을 넣어줬다.
( .at() 넘나 애정한다...😍 )
leftCnt 는 왼쪽에서 보이는 카운트고, 무조건 1개는 보이니까 초기 값을 1로 넣어줬다.
rightCnt도 마찬가지!
그 다음 for문을 돌면서 trophy[i]가 max보다 크면 카운트 시키는 방식으로 코드를 짰다.
마지막으로 첫째 줄에 왼쪽에서 보이는 개수, 둘째 줄에 오른쪽에서 보이는 개수를 출력하라고 해서
원래 console.log(leftCnt + '\n' + rightCnt)
이렇게 해줬으나 통과가 안돼서 각각 한 줄씩 출력해줬다
근데!!!!! 안된다.... 스터디에서 나랑 비슷하게 짠 사람이 있길래
그 분은 통과되는지 물어봤는데 그 분도 안된다!!!!!!1
둘다 로컬에서 예제입력할 떄는 굉장히 잘되는데 ㅠㅠ안되는 케이스가 뭐가 있는지,,,또르르,,,