Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- prescaling
- Edge Detector
- dataflow modeling
- stop watch
- half adder
- uart 통신
- Recursion
- Linked List
- D Flip Flop
- ring counter
- LED
- soc 설계
- BASYS3
- DHT11
- verilog
- vivado
- Pspice
- java
- test bench
- atmega 128a
- structural modeling
- pwm
- Algorithm
- FND
- gpio
- KEYPAD
- hc-sr04
- ATMEGA128A
- behavioral modeling
- i2c 통신
Archives
- Today
- Total
거북이처럼 천천히
알고리즘(6월 2일) 본문
1. 문제
- 사용자로부터 N개의 숫자들을 입력받는다.
- 입력받은 N개의 숫자들을 내림차순으로 정렬한 후, 정렬한 결과를 출력한다.
예시)
사용자 : {2, 4, 6, 10, 8, 12, 14, 16} 입력 → sortedList : {16, 14, 12, 10, 8, 6, 4, 2}
2. 생각해보기
사용자로부터 받은 숫자들을 "inputNumberList" 리스트에 저장하고, 내림차순으로 정렬된 결과를 "sortedList" 리스트에 저장하며, "inputNumberList" 리스트의 첫 번째 원소를 최대 값이라고 초기에 가정한다. 그리고, while문을 이용하여
"inputNumberList" 리스트의 사이즈가 0이 될 때까지 for문을 이용하여 "inputNumberList" 리스트의 최대 값을 비교하면서 최대 값을 찾는다. 한 번 사이클이 돌고 난 뒤, 최대 값을 "inputNumberList" 리스트에서 삭제, "sortedList" 리스트에 추가하여 N개의 숫자들을 정렬한다.
3. 풀이 및 코드 분석
import java.util.Scanner;
import java.util.ArrayList;
public class WhichIsBigger {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
ArrayList<Integer> inputNumberList = new ArrayList<>(); // 사용자로부터 받은 숫자 N개를 저장하는 리스트
ArrayList<Integer> sortedList = new ArrayList<>(); // 정렬된 숫자 N개를 저장하는 리스트
// 사용자로부터 숫자 N개 입력받기
while(true) {
System.out.println("Enter a number : (if you want to quit, Enter !)");
String inputData = scan.nextLine();
if(inputData.equals("!")) {
break;
}else {
int inputNumber = Integer.parseInt(inputData);
inputNumberList.add(inputNumber);
}
}
// 중간 점검 : 입력받은 "inputNumberList" 리스트 확인
System.out.printf("List \"inputNumberList\" : " + inputNumberList + "\n");
// 내림차순 정렬
while(inputNumberList.size() > 0) {
int MaximumNumber = inputNumberList.get(0), MaximumLocation = 0;
for(int i=0; i<inputNumberList.size(); i++) {
if(inputNumberList.get(i) > MaximumNumber) {
MaximumNumber = inputNumberList.get(i);
MaximumLocation = i;
}
}
// sortedList에 최대 값 추가, inputNumberList에 최대 값 삭제
sortedList.add(MaximumNumber);
inputNumberList.remove(MaximumLocation);
}
System.out.printf("Sorted List : " + sortedList + "\n");
System.out.printf("inputNumberList : " + inputNumberList + "\n");
}
}
'Algorithm > 알고리즘 문제 풀이' 카테고리의 다른 글
알고리즘 (6월 7일) - (2) (0) | 2022.06.07 |
---|---|
알고리즘 (6월 7일) (0) | 2022.06.07 |
알고리즘 (6월 6일) (0) | 2022.06.06 |
알고리즘 (6월 5일) (0) | 2022.06.06 |
알고리즘 (6월 3일) (0) | 2022.06.03 |