hahn

단계별로 풀어보기(1차원 배열) 본문

코딩테스트 연습/백준(JAVA)

단계별로 풀어보기(1차원 배열)

hahn 2021. 8. 22. 19:17
728x90
반응형

슬슬 조금 난이도가 올라가는 거 같아서 2번째부터는 코드를 복사해서 이클립스로

 

테스트해보면서 했다. 일단 이 정도는 손 코딩이 가능해야 하니까

 

웹에 작성을 먼저 하는 걸로


1.  최소, 최대

nextInt, nextLine 이거 같이 사용하면 이상함.

 

잘 생각하고 쓰자.


2.  최댓값

최댓값과 최댓값이 몇 번째로 입력된 건지 구하는거였는데

 

멍청하게 문제 잘못 읽어서 2번째로 입력된 숫자가 몇 번째로 큰 수인지 구하고 있었음;


3.  숫자의 개수

숫자의 개수를 어떻게 구할까 고민하다가

 

for 문 이용해서 계속 10으로 나누는 방법을 생각해냄.

 

근데 얘가 몇 자리인지 알 수가 없어서 log10 이용 후 버림 처리함.


4.  나머지

예제 입력에 따라 예제 출력과 출력이 일치하게 나오는데

 

왜 통과를 못하는지 모르겠음.

 

반례를 찾아봐야 할 듯?

 

일단 얘는 arr 모두 순회하면서 일치하는 애는 -1로 바꾸고

(입력이 음이 아닌 정수기 때문에 -1로 설정함)

 

-1 만나면 result-- 후 break 하게 함.

 

그러나 마지막 인덱스까지 순회하면 result--가 불가능하기에

 

마지막에 체크하는 거 하나 넣어줌.

 

--해결함--

Botherahn :: 단계별로 풀어보기(1차원 배열 - 나머지) (tistory.com)


5.  평균


6.  OX퀴즈

 

문제를 대충 읽어서 O가 가장 많이 연속된 걸 result로 출력하면 되는 줄 알았음.

 

뭔가 이상해서 다시 읽어보고 arr[j].length()를 모두 더하면 되는구나 했는데

 

그것도 잘못 이해함 ㅋㅋㅋㅋㅋㅋㅋ

 

이때 난 문제를 더럽게 안 읽는구나 하고 멘붕왔음.

 

예시가 이거였는데 1 + 2+ 3을 보고

 

멘붕와서 생각하기 귀찮아 for 문 하나 더 때려 박음.


7.  평균은 넘겠지

더보기
import java.util.Scanner;

class Main{
    
    public static void main(String[] args){
        
        Scanner sc = new Scanner(System.in);
        
        int testCaseCount = sc.nextInt(),
            testCaseDetailCount,
            avg;
        
        double overAvgCount;
        
        int[] arr;
        
        for(int i = 0; i < testCaseCount; i++){
            
            testCaseDetailCount = sc.nextInt();
            
            arr = new int[testCaseDetailCount];
            
            avg = 0;
            
            overAvgCount = 0;
            
            for(int j = 0; j < testCaseDetailCount; j++){
                
                arr[j] = sc.nextInt();
                
                avg += arr[j];
                
            }
            
            avg /= testCaseDetailCount;
            
            for(int j = 0; j < testCaseDetailCount; j++){
                
                if(arr[j] > avg) overAvgCount++;
                    
            }
            
            System.out.printf("%.3f%%\n", overAvgCount / testCaseDetailCount * 100);
            
        }
        
    }
    
}

슬슬 코드가 길어져서 캡처가 안 된다.

 

분명 맞은 거 같은데 자꾸 틀리길래 다시 생각해 보니까

 

변수 초기화를 안 해줬다.

 

제발 중첩 for문 쓸 때는 초기화 좀 하자...

 

+%%는 printf 사용 시 %기호 출력하는 방법이니 까먹지 말자.

 

+%f double 출력이다 c에서는 %lf라는데 뭐 암튼 헷갈리지 말자.

728x90
반응형