on
[BOJ1668/JAVA] 트로피 진열
[BOJ1668/JAVA] 트로피 진열
https://www.acmicpc.net/problem/1668
문제
문제는 쉽다고 느껴졌다. 근데 예제 입력하면 계속해서 답이 다르게 나오는 오류가...
풀이
나는 처음에 배열에서 가장 큰 값의 인덱스를 구해서 왼쪽에서 인덱스만큼 세주고, 오른쪽에서 인덱스만큼 세주는 것을 생각했다.
하지만 이럴 경우 예제입력2와 같이 같은 높이의 트로피를 만났을 때 오류가 생긴다.
그리고 두번째 방법으로 같은 높이의 트로피를 만났을 때 세주지 않고 continue하는 것을 추가..
하지만 또 오류...
그리고 세번째 방법으로 배열의 첫번째 요소를 가지고 계속 비교해서 작으면 ++해주는 것을 생각했다.
하지만 이것도 앞에 큰 트로피가 있으면 세주면 안된다.
삽질을 개많이 하다가 아래와 같이 해결하였다.
1. 배열의 첫번째 원소를 temp변수에 저장.
2. temp랑 배열의 원소랑 비교를 해서 작으면 ++
3. 이때 배열의 원소가 더 크면 temp변수에 넣어준다.
4. 왼쪽, 오른쪽 다르게 for문을 돌려주면서 세준다.
핵심은 temp를 가장 큰 높이로 계속 바꾸어줘야한다.
그래야 큰 트로피에 가려진 자신보다 큰 원소를 ++안해준다.
난 빡대갈인거 또 인정해부렸다.
언제쯤 잘할래 ~~ 아래는 겨우겨우 맞은 코드.
코드
import java.util.Scanner; public class BOJ1668 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int total = sc.nextInt(); // 트로피의 개수 int [] num=new int[total]; // 트로피의 높이 for(int i=0;i=0;i--) { if(temp
from http://silvergal.tistory.com/71 by ccl(A) rewrite - 2021-12-05 18:27:28