-
[네이버클라우드 캠프/3주차] 연속합이 가장 큰 두 수 구하기네이버클라우드 캠프 | BE/Java 과제 2023. 4. 12. 15:38728x90
지난 블로그 글이었던 '[네이버클라우드 캠프/3주차] 문자열 중 가장 많이 등장하는 문자 구하기' 에서도
컬렉션 프레임워크 중 하나인 Map을 사용하여 과제를 풀이했는데요.
이번 블로그 글 역시 컬렉션 프레임워크 중 하나인 List를 사용하여 과제를 풀어보도록 하겠습니다.
❓문제 : 5개의 정수를 입력 받아, 연속하는 두 수의 합이 가장 커지는 구간의 두 수를 출력하세요.
1. 5개의 정수를 입력받아 List에 저장합니다.
public class Main { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); Scanner sc = new Scanner(System.in); for(int i = 0; i < 5; i++) { System.out.printf("%d번째 정수 입력 > ", i + 1); Integer num = sc.nextInt(); list.add(num); } } }
2. 연속하는 두 수의 합이 가장 커지는 구간를 확인합니다.
public class Main { public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>(); Scanner sc = new Scanner(System.in); for(int i = 0; i < 5; i++) { System.out.printf("%d번째 정수 입력 > ", i + 1); Integer num = sc.nextInt(); list.add(num); } Integer max = 0; // 연속합의 최대를 저장할 변수 int index = 0; // 연속합의 최대를 가지는 인덱스 번호를 저장할 변수 for(int i = 0; i < list.size() - 1; i++) { // 4번 확인 if(list.get(i) + list.get(i+1) > max) { index = i; max = list.get(i) + list.get(i+1); } } System.out.println(list.get(index) + ", " + list.get(index+1)); } }
연속합의 최대를 저장할 변수 max와, 연속합의 최대를 가지는 인덱스의 번호를 저장할 변수 index를 선언합니다.
5개의 정수를 입력받았기 때문에, 연속합의 확인은 4번 인덱스까지 (4번) 확인하도록 for문을 사용했습니다.
실질적으로 max 변수를 사용하지 않지만 최대 값을 가지는 인덱스의 번호를 index 변수에 저장함으로서.
마지막 출력 시 index 변수에 저장된 인덱스를 통해 요소를 출력할 수 있습니다.
🍎 마무리
지금까지는 하나의 최대 값을 구하기 위해 저장된 max 값을 가져다가 사용하는 것이 대부분이었습니다.
그러나 이번 과제에서는 직접적으로 값을 가져다 출력하는 것이 아닌, 최대 값을 찾아가는 과정에서 구한 index 번호를 통해
인덱스에 해당하는 값을 출력해낸다는 것이 새로운 인사이트 중 하나였던 것 같습니다.
꾸준히 생각을 정리하고, 스스로 구상하는 연습을 통해 문제를 잘 풀어나가도록 하겠습니다. 모두 화이팅❣️
'네이버클라우드 캠프 | BE > Java 과제' 카테고리의 다른 글
[네이버클라우드 캠프/3주차] 소수 출력하기 (0) 2023.04.14 [네이버클라우드 캠프/3주차] 두 수의 합이 유일한 값의 개수 출력하기 (0) 2023.04.13 [네이버클라우드 캠프/3주차] 문자열 중 가장 많이 등장하는 문자 구하기 (0) 2023.04.12 [네이버클라우드 캠프/2주차] 재귀메서드 (feat. BigInteger) (0) 2023.04.12 [네이버클라우드 캠프/2주차] 반올림 하기 (0) 2023.04.11