-
[JAVA] 알고리즘 문제 - 보이는 학생Java 알고리즘 문제/자바(Java) 알고리즘 문제풀이 입문 2023. 8. 9. 10:33반응형
보이는 학생
설명
선생님이 N명의 학생을 일렬로 세웠습니다. 일렬로 서 있는 학생의 키가 앞에서부터 순서대로 주어질 때, 맨 앞에 서 있는
선생님이 볼 수 있는 학생의 수를 구하는 프로그램을 작성하세요. (앞에 서 있는 사람들보다 크면 보이고, 작거나 같으면 보이지 않습니다.)
입력
첫 줄에 정수 N(5<=N<=100,000)이 입력된다. 그 다음줄에 N명의 학생의 키가 앞에서부터 순서대로 주어진다.
출력
선생님이 볼 수 있는 최대학생수를 출력한다.
예시입력
8
130 135 148 140 145 150 150 153예시 출력
5
import java.util.Scanner; public class Main { public int test(int n, int[] arr) { int answer = 1; int max = arr[0]; for(int i=0; i<arr.length; i++) { if(max < arr[i]) { answer +=1; max = arr[i]; } } 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.println(t.test(n, arr)); } }
학생들을 일렬로 세워뒀을때 맨앞에서 선생님이 보았을때 다음 i학생이 i+1학생보다 키가 크면 i+1학생이 보이고
키가 같거나 작다면 i+1 학생이 보이지 않는문제이다.
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.println(t.test(n, arr)); }
8
130 135 148 140 145 150 150 153예시에서 8명의 학생이 있고 그 뒤에는 학생들의 키를 입력받는다.
public int test(int n, int[] arr) { int answer = 1; int max = arr[0]; for(int i=0; i<arr.length; i++) { if(max < arr[i]) { answer +=1; max = arr[i]; } } return answer; }
키가 같은지 작은지를 판별하기 위해 max값을 설정하고 순서대로 봤을때 키가 크든 작든 첫학생은 무조건 보이니
answer = 1로 설정해두었다.
입력받은 배열을 for문을 돈다. 우선 max의 값은 첫번재 학생으로 설정해두었고
만약 for문을 돌면서 i번째 학생이 0번째 학생보다 크다면 max의 값을 arr[i]값으로 바뀌며 보이는 학생 수 (answer) +1을 해주어 손 쉽게 문제 해결이 가능하다.
(같은 경우에는 카운팅 하지 않습니다)
반응형'Java 알고리즘 문제 > 자바(Java) 알고리즘 문제풀이 입문' 카테고리의 다른 글
[JAVA] 알고리즘 문제 - 파보나치수열 (0) 2023.08.09 [JAVA] 알고리즘 문제 - 가위 바위 보 (0) 2023.08.09 [JAVA] 알고리즘 문제 - 암호 해독하기 (0) 2023.08.09 [JAVA] 알고리즘 문제 문자열 압축 (0) 2023.08.09 [JAVA] 알고리즘 문제 - 유효한 팰린드롬 (1) 2023.05.30