네이버클라우드 캠프 | BE/Java 과제
-
[네이버클라우드 캠프/3주차] 최소공배수와 최대공약수 출력하기네이버클라우드 캠프 | BE/Java 과제 2023. 4. 14. 12:37
고등수학에서 두 수의 최소공배수와 최대공약수를 구하기 위해서는 조립제법을 사용합니다. 조립제법을 통해 직관적으로 보이는 수를 곱하여 최소공배수 혹은 최대공약수를 구합니다. 이러한 최소공배수와 최대공약수를 어떻게 프로그램(알고리즘)으로 작성해야 하는지.. 참 많이 고민되었습니다. ❓ 문제 : 사용자에 두 정수를 입력받아, 최소공배수와 최대공약수를 출력하세요. 1. 생각 정리 최대공약수는 for문을 통해 사용자가 입력한 두 수에 대해 공통적으로 나눠지는 수를 구해야겠다고 생각했습니다. 그러나 사용자가 큰 수를 입력하는 경우를 대비하여 많은 횟수를 반복하지 못하도록 제한하는 것이 필요했습니다. (처음에는 어떤 기준으로 반복 횟수를 제한해야할지 감조차 오지 않았습니다.) 이를 위해 min이라는 int형 변수를 ..
-
[네이버클라우드 캠프/3주차] 소수 출력하기네이버클라우드 캠프 | BE/Java 과제 2023. 4. 14. 10:45
소수를 구하는 문제를 풀 때.. 정말 힘들었습니다. 앞서 풀었던 과제 중 '사용자에게 10개의 정수를 입력받고, 소수의 개수를 출력하세요. (단, 입력 값은 2`30 제한)'와 같이 입력받는 수가 제한되어 있을 경우에는 비교적 수월하게 풀이했습니다. 입력받는 수의 범위가 제한되어 있을 경우와 제한되지 않을 경우로 나누어 풀이를 설명하도록 하겠습니다. ❓문제 : 사용자에게 10개의 정수를 입력받고, 소수의 개수를 출력하세요. (단, 입력 값은 2`30 제한) 1. 소수와 소수가 아닌 수의 특징을 찾았습니다. 2 3 5 7 11 13 17 19 23 29 → 공통점 : 홀수 (9, 15, 21, 25, 27 제외 : 3이나 5의 배수) 짝수 (2) 4 6 8 9 10 12 14 15 16 18 20 21 2..
-
[네이버클라우드 캠프/3주차] 두 수의 합이 유일한 값의 개수 출력하기네이버클라우드 캠프 | BE/Java 과제 2023. 4. 13. 09:46
3주 차에는 컬렉션 프레임워크를 주로 배운 만큼, 이를 활용한 과제가 많았습니다. 각 인터페이스가 아닌 List와 Map 두 가지를 모두 활용하여 주어진 문제를 풀어보도록 하겠습니다. (컬렉션 프레임워크를 활용한 과제는 모두 새롭고, 인사이트를 얻게 되는 것 같습니다.) ❓문제 : 6개의 정수를 입력받아, 두 수의 합이 유일한 값이 되는 개수를 출력하세요. 이번 문제는 앞선 3주 차 과제 2개를 활용하여 풀이한 문제였습니다. [네이버클라우드 캠프/3주차] 문자열 중 가장 많이 등장하는 문자 구하기 지난 과제를 풀며, 어렵다고 느꼈던 문제 혹은 새로운 깨달음을 준 문제들에 대해 블로그 글로 정리하고 있습니다. '문제를 풀었을 때 (그때그때) 블로그 글로 작성해 두면 더 좋았을 텐데..'란 1-three.t..
-
[네이버클라우드 캠프/3주차] 연속합이 가장 큰 두 수 구하기네이버클라우드 캠프 | BE/Java 과제 2023. 4. 12. 15:38
지난 블로그 글이었던 '[네이버클라우드 캠프/3주차] 문자열 중 가장 많이 등장하는 문자 구하기' 에서도 컬렉션 프레임워크 중 하나인 Map을 사용하여 과제를 풀이했는데요. 이번 블로그 글 역시 컬렉션 프레임워크 중 하나인 List를 사용하여 과제를 풀어보도록 하겠습니다. ❓문제 : 5개의 정수를 입력 받아, 연속하는 두 수의 합이 가장 커지는 구간의 두 수를 출력하세요. 1. 5개의 정수를 입력받아 List에 저장합니다. public class Main { public static void main(String[] args) { List list = new ArrayList(); Scanner sc = new Scanner(System.in); for(int i = 0; i < 5; i++) { Sys..
-
[네이버클라우드 캠프/3주차] 문자열 중 가장 많이 등장하는 문자 구하기네이버클라우드 캠프 | BE/Java 과제 2023. 4. 12. 14:38
지난 과제를 풀며, 어렵다고 느꼈던 문제 혹은 새로운 깨달음을 준 문제들에 대해 블로그 글로 정리하고 있습니다. '문제를 풀었을 때 (그때그때) 블로그 글로 작성해 두면 더 좋았을 텐데..'란 후회와 속상함이 생겼지만, Map과 Entry를 사용하는 방법에 대해 이해할 수 있게 만들어준 과제를 공유하고 싶어 블로그 글을 작성합니다. ❓문제 : 문자열을 입력받고, 가장 많이 등장하는 문자와 그 개수를 출력하세요. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("문자열 입력 > "); String str = sc.nextLine(); // 각 문자의 ..
-
[네이버클라우드 캠프/2주차] 재귀메서드 (feat. BigInteger)네이버클라우드 캠프 | BE/Java 과제 2023. 4. 12. 10:46
2주 차에는 정말 많은 내용을 배움과 동시에, 과제에서도 느낀 부분이 많았습니다. 이번 블로그에서는 재귀메서드를 생성하고 구현하는 것에 대해 정리해보려고 합니다. ❓재귀메서드를 이용하여 사용자가 입력한 숫자까지의 합을 구하세요. static BigInteger infiniteAdd (BigInteger b) 문제를 풀기에 앞서, BigInteger는 어떤 역할을 하고 있을까요? 1. BigInteger BigInteger는 자바에서 정수형을 다루는 클래스입니다. int나 long이 표현할 수 있는 수의 범위를 넘어서는 아주 큰 정수 데이터도 처리할 수 있는 클래스입니다. 이러한 BigInteger는 불변성(immutable)을 갖고 있기 때문에 한 번 생성되면 값을 수정할 수 없습니다. 이에 따라 대신 ..
-
[네이버클라우드 캠프/2주차] 반올림 하기네이버클라우드 캠프 | BE/Java 과제 2023. 4. 11. 17:56
❓문제 : 16.459를 소수점 둘째 자리까지 반올림해서 출력하세요. 자바를 사용하며 수학 계산과 관련된 문제를 풀기 위해 Math 클래스를 종종 사용하게 됩니다. 그중 round(반올림) 메서드와 random(난수 발생) 메서드를 주로 사용하게 되는데요. random 메서드는 이젠 어느 정도 익숙해져 풀이하기 편하지만, round 메서드는 익숙해지지 않습니다.. 이번 블로그 글을 통해 round 메서드에 대한 개념과 함께 사용 방법을 익힐 수 있도록 하겠습니다. (함께 해봅시다!) 1. round 메서드 round 메서드는 double 타입의 입력 값을 받아, 해당 값을 반올림한 long 타입의 결과를 반환합니다. public static long round(double a) 아래의 예시를 통해 반올림..
-
[네이버클라우드 캠프/2주차] 클래스의 생성과 배열 관련 메서드네이버클라우드 캠프 | BE/Java 과제 2023. 4. 11. 14:59
과제에 대한 블로그 글은 정말 오랜만이네요. 앞으로 과제를 풀며 정리하고 싶었던 내용들에 대해 꾸준히 정리해 나가도록 하겠습니다. ❓문제 : 아래의 static 메서드를 가지는 ArrayUtility 클래스 생성하고 사용하시오. static int[] remove(int[] arr1, int[] arr2); // arr1에서 arr2배열의 숫자를 모두 삭제한 새로운 배열 리턴 ArrayUtility 클래스를 생성하여 주어진 메서드를 static으로 생성해 보겠습니다. 메인에서 이를 구현하는 모습까지 확인하고 세부적으로 설명하도록 하겠습니다. public class ArrayUtility { public static int[] remove(int[] arr1, int[] arr2) { // 임시 배열 생성..