728x90
✔️문제 설명

SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
✔️문제 풀이
‼️‼️ 테스트 케이스 한 개 통과 못함 이슈

아무리 봐도 코드가 맞는데, 자꾸 테스트 케이스 한 개를 통과를 못 했다..

커뮤니티를 확인했는데, 이 댓글을 보고 갑자기 유레카...
if(n != 4){
for(int j = 2; j< n-2; j++){
max = 0;
for(int k =-2; k<3 ; k++){
if(k == 0) continue;
if(arr[j] < arr[j+k]) {
max = 0;
break;
}
max = Math.max(max, arr[j+k]);
}
if(max != 0) total += (arr[j] - max);
}
}
이게 나의 틀린 코드 중 오류난 부분이다.
max 가 0 이 아닐때 조망이 가능하다고 판단하고 조망 가능 층 수를 계산하기 때문에 틀린거였다..
그래서 조망 불가능한 상황(좌우로 4칸 중 더 높은 건물이 있는 경우)은 max 가 -1이 되도록 처리 해주었다.!!

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.util.StringTokenizer;
class Solution
{
public static void main(String args[]) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
for(int i =0 ; i<10; i++){
int n = Integer.parseInt(br.readLine());
int[] arr = new int[n];
int total = 0;
st = new StringTokenizer(br.readLine());
for(int j = 0; j<n; j++){
arr[j] = Integer.parseInt(st.nextToken());
}
int max = 0;
for(int j = 2; j< n-2; j++){
max = 0;
for(int k =-2; k<3 ; k++){
if(k == 0) continue;
if(arr[j] < arr[j+k]) {
max = -1;
break;
}
max = Math.max(max, arr[j+k]);
}
if(max != -1) total += (arr[j] - max);
}
System.out.printf("#%d %d\n", i+1, total);
}
}
}
✔️ 개선 코드 부분
for(int j = 2; j< n-2; j++){
max = -1;
for(int k =-2; k<3 ; k++){
if(k == 0) continue;
max = Math.max(max, arr[j+k]);
}
if(arr[j] > max) total += (arr[j] - max);
}
728x90
'Coding Test > SWEA 풀이' 카테고리의 다른 글
[SWEA] 1209. Sum : D3 (java) (0) | 2024.11.16 |
---|---|
[SWEA] 1208. [S/W 문제해결 기본] 1일차 - Flatten : D3 (java) (2) | 2024.11.15 |
[SWEA] 1204. [S/W 문제해결 기본] 1일차 - 최빈수 구하기 : D2 (java) (1) | 2024.11.14 |