[문제풀이] 02-02. 보이는 학생

𝒄𝒉𝒂𝒏𝒎𝒊𝒏·2023년 10월 27일
0

인프런, 자바(Java) 알고리즘 문제풀이

Array(1, 2차원 배열) - 0202. 보이는 학생


🗒️ 문제


🎈 나의 풀이

	private static int solution(int n, String str) {
        int answer = 1, tall;
        String[] students = str.split(" ");
        tall = Integer.parseInt(students[0]);

        for(int i=0; i<n; i++) {
            if(Integer.parseInt(students[i]) > tall) {
                tall = Integer.parseInt(students[i]);
                answer += 1;
            }
        }

        return answer;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = Integer.parseInt(sc.nextLine());
        String str = sc.nextLine();
        System.out.println(solution(n, str));
    }


🖍️ 강의 풀이

    public int solution(int n, int[] arr){
		int answer=1, max=arr[0];
		for(int i=1; i<n; i++){
			if(arr[i]>max){
				max=arr[i];
				answer++;
			}
		}
		return answer;
	}
	public static void main(String[] args){
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		int n=kb.nextInt();
		int[] arr=new int[n];
		for(int i=0; i<n; i++){
			arr[i]=kb.nextInt();
		}
		System.out.print(T.solution(n, arr));
	}


💬 짚어가기

입력 정수의 갯수가 최대 10만개로, O(N2)O(N^2)의 시간 복잡도를 갖는 2중 For문은
연산 시간이 초가되어 문제 해결이 어렵다. 따라서, 가장 큰 키의 값을 따로 보관하여,
1번만 순회하도록 구현한다.

profile
𝑶𝒏𝒆 𝒅𝒂𝒚 𝒐𝒓 𝒅𝒂𝒚 𝒐𝒏𝒆.

0개의 댓글