3일차 알고리즘은 배열과 count 를 활용한 알고리즘 문제이다.
어제 배열로 문제를 결국 해결하지 못해 오늘은 배열로 문제를 해결하자고 다짐하면 문제를 골랐다.
주어진 문제의 내용을 이해하기는 쉬웠다.
문제의 예시에서 처럼 오른쪽에 크기 6의 막대가 놓여져 있다면 6보다 큰 막대만 보이게 된다.
따라서 문제에서는 보이는 막대를 구하라는 의미는 6보다 큰 막대기를 구하라는 말이다.
어떻게 보면 최대값을 찾는 문제인데, 이 문제를 풀기가 어려웠다.
그 이유는 최대값을 구하는 문제와 달리
이 문제를 풀기 위해서는 바로 i++ (->) 이 아니라 i-- (<-) 로 생각해야 하기 때문이다.
즉 크다면 1을 더하고 MAX 값을 변경해주면서 가장 왼쪽에 도달해야 하는 문제이다.
<실행코드> - JAVA public class Main { public static void main(String[] args) { Scanner sc =new Scanner(System.in); //스캐너 객체 생성 int co = sc.nextInt(); // 입력 받고자 하는 수의 갯수를 입력 받아 변수에 저장 int[] arr = new int[co]; // 입력 받은 정수를 저장할 배열 생성 for (int i=0; i<co; i++) { arr[i] = sc.nextInt(); } int max = arr[co-1];// co-1인 이유는 i-- int count = 1; for(int i=co-1; i>=0; i--){ // arr 길이 만큼 반복 거꾸로 하기 때문에 if(arr[i]>max) {// 뽑힌 i가 max보다 크다면 max = arr[i];// max는 뽑힌 i count++; //max보다 큰수를 뽑기 } } System.out.println( count ); //보이는 막대의 수 } } |
처음에 코딩은 철학을 공부하는 것과 같다는 말을 들었을 때 그런가 싶었다.
하지만 알고리즘 문제를 풀면서 보니까 그말이 맞는 것 같다.
논리적으로 생각하는 방법이 동일 한 것 같다.
아직은 어렵지만 그래도 문제를 하나하나 해결해 나아가면서 성취감이 느껴져서 너무 재미있다.
아직은 배열을 완벽히 이해하지 못했지만, 어제보다는 조금 더 발전 해 나가는 중이다.
'포트폴리오 > 백준 알고리즘' 카테고리의 다른 글
[6일차] 백준 _ 2750 (0) | 2022.08.01 |
---|---|
[5일차] 백준 class1_1000,1001,1008 (0) | 2022.07.31 |
[4일차] 백준_2875 (0) | 2022.07.29 |
[2일차] 백준 15953 (0) | 2022.07.28 |
[1일차] 백준_2739 (0) | 2022.07.27 |