알고리즘 문제를 풀면서 나의 부족한 지식을 깨닫고 강의를 듣습니당. 재밌네여.
*최댓값 구하기:
사용자에게 n개의 숫자를 입력받아 가장 큰 수와 그 수들을 모두 더한 값을 구하라.
가장 중요한 포인트는 sum이라는 변수를 먼저 선언해서 for문을 돌리며 계속 더해주는 것|
마찬가지로 max도 변수를 먼저 선언해서 if문으로 해당 숫자보다 max가 작은 경우 그 숫자를 max로 바꿔준당.
다만 실수를 많이 하는 부분이 있는데, int형 초기화!
int형 초기화를 보통은 0을 많이 넣는데, 이게 가끔 문제를 일으킬 수도 있는거라는거.
예를 들어서 요 코드의 경우 숫자를 입력받는데 만약 입력받은 숫자들이 모두 음수라면 max값은 입력받은 숫자에서 비교가 되지 않고 초기화값인 0이 최대값이 돼 버린다. 그렇기 때문에 무턱대고 0으로 초기화를 하면 아니아니 아니된다.
여기에선 입력받는 가장 첫번째 값으로 초기화를 해 주었다.
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 | import java.util.Scanner; public class Code01{ public static void main(String[] args} { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); int [] data = new int [n]; for(int i=0 ; i<n ; i++) data[i] = scan.nextInt(); int sum = 0; int max = data[0]; for(int i=0 ; i<n ; i++){ sum += data[i]; if(data[i] > max){ max = data[i]; } } System.out.println("더하기 값은 " + sum); System.out.println("최대 값은 " + max); } } | cs |
*shift하기:
n개의 정수를 입력받아 순서대로 배열에 저장한다. 그런 다음 모든 정수들을 한 칸씩 오른쪽으로 shift하라.
마지막 정수는 배열의 첫 칸으로 이동하라.
쉽게 말하면
[1] [2] [3] [4] [5]
[5] [1] [2] [3] [4]
이렇게 바꾸라는 말!!
선생님이 말씀하셨다.
변수 temp를 선언해서 2를 temp에 넣었다가 3을 temp에 넣었다가 4를 temp에 넣었다가...하는 것보다는
마지막 숫자인 5를 처음에 temp에 넣어두고 한 칸씩 밀어주면 가장 빠르겠쪄?...
여러분 제발 생각을 하시고 코딩을 하시기 바랍니다...부탁입니당?
라고... 제발 생각하라며 코딩해달라고 당부를 하셨다.
암튼, 그래서 temp를 선언함과 동시에 가장 마지막 숫자일 n-1를 넣어서 초기화 해주고,
다른 숫자들은 for문을 이용해서 한 칸씩 밀어 넣어줬다.
그리고 포문이 끝남과 동시에 temp에 있던 마지막 숫자를 가장 처음인 array[0]=temp로 넣어준다.
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 29 30 31 32 33 34 35 36 37 38 39 40 | package Lesson1; import java.util.Scanner; public class Code02Prac { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("숫자를 입력해주세요"); int n = scan.nextInt(); int [] array = new int [n]; System.out.println(n + "개의 숫자를 입력해주세요"); for(int i=0 ; i<n ; i++) { array[i] = scan.nextInt(); } for(int i=0 ; i<n ; i++) { System.out.print(array[i] + " "); } System.out.println(); System.out.println(array[n-1]); int temp= array[n-1]; for(int i=n-1 ; i>0 ; i--) { array[i] = array[i-1]; System.out.println(i); } array[0] = temp; for(int i=0 ; i<n ; i++) { System.out.print(array[i] + " "); } } } | cs |
'건승하고있어요 > Java' 카테고리의 다른 글
[Collection] 스택(Stack, LIFO) 과 큐(Queue, FIFO) (0) | 2018.02.03 |
---|---|
[Collection] List컬렉션 - ArrayList, LinkedList (0) | 2018.02.03 |
Collection Framework 컬렉션 프레임워크 (0) | 2018.02.03 |
[입출력]StringBuilder 클래스 (0) | 2018.02.02 |
[입출력] StringTokenizer 클래스 / 자바 단어 자르기 (0) | 2018.02.02 |