java
-
[네이버클라우드 캠프/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주차] 반올림 하기네이버클라우드 캠프 | 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) { // 임시 배열 생성..
-
[Java] 게터/세터(Getter/Setter)를 사용하는 이유IT Study/컴퓨터 기초 2023. 4. 10. 16:58
1. Getter/Setter 클래스의 멤버 변수를 public으로 선언하면, 해당 멤버 변수는 어디서든 직접 접근이 가능합니다. 그러나 멤버 변수에 직접 접근하는 것은 문제가 될 수 있습니다. ❓ 왜 클래스의 멤버 변수에 직접 접근하는 것이 문제가 될까요? 왜냐하면 클래스의 멤버 변수에 직접 접근한다는 것은 외부에서 멤버 변수의 값을 변경할 수 있다는 의미로, 외부에서 클래스의 멤버 변수에 직접 접근하여 값을 변경하면 해당 클래스는 의도치 않게 동작할 수 있습니다. public이 아닌 *private이라는 키워드로 멤버 변수가 선언되어 있더라도 클래스의 외부에서 접근이 가능하게 되면 해당 클래스 내에 구현이 변경되었을 때 다른 코드에 영향을 줄 수 있습니다. *private : 접근 제한자 중 하나로,..
-
[Java] 스레드 (Thread)IT Study/컴퓨터 기초 2023. 4. 8. 17:47
1. 스레드란? 컴퓨터의 프로그램이 동시 실행될 수 있도록 하는 것을 멀티 스레딩이라고 합니다. 스레드는 실행되는 프로그램에서 개별적인 흐름을 만든 것으로, 프로세스 안에서 실행되는 하나의 실행 흐름입니다. 여러 개의 스레드는 하나의 프로세스에서 동시에 실행될 수 있으며, 서로 공유되는 자원을 이용할 수 있습니다. 1-1. 스레드와 프로세스 구분 스레드 프로세스 정의 프로세스 안에서 실행되는 실행 흐름 중 하나 실행 중인 프로그램 자원 공유 한 프로세스 내 스레드는 메모리 등의 자원 공유 독립적으로 OS에서 자원 할당 받음 종료 프로세스 내 타 스레드가 종료될 때까지 대기 종료 시, OS에서 자원 회수 실행 흐름 (순차적) 한 프로세스 내 스레드는 서로 다른 실행 경로를 가지나, 실행 시간 중첩 독립적 ..
-
[Java] 열거형 (Enum)IT Study/컴퓨터 기초 2023. 4. 6. 15:21
1. 열거형이란? 열거형은 서로 연관된 상수들의 집합을 나타내는 것으로, 여러 개의 상수 중 하나를 선택해야 하는 경우 유용하게 사용할 수 있습니다. 우리는 열거형을 통해 상수의 이름만으로 해당 상수가 어떤 값을 나타내는지 확인할 수 있기 때문에 가독성이 높아집니다. 2. 열거형의 선언 2-1. 간단한 열거형 선언 enum 키워드를 사용하여, 상수를 쉼표로 구분하여 선언합니다. (열거형 상수는 대문자로 작성하는 것을 권장합니다.) enum 열거형명 { 상수명1, 상수명2, 상수명3... } enum Weekday { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } public class Main { public static void ma..
-
[Java] 제네릭과 와일드카드IT Study/컴퓨터 기초 2023. 4. 5. 18:02
1. 제네릭이란? 제네릭은 컴파일 시 객체의 타입을 체크하며, 객체의 타입을 미리 지정하여 타입 안정성을 확보할 수 있는 기능입니다. 간단히 말해, 다룰 객체의 타입을 미리 명시해 줌으로써 번거로운 형 변환을 줄일 수 있습니다. 예를 들어, ArrayList와 같은 컬렉션 클래스는 다양한 종류의 객체를 담을 수 있기는 하지만 보통 한 종료의 객체를 담는 경우가 많습니다. 그럼에도 불구하고 ArrayList는 객체를 꺼낼 때마다 타입을 체크하고 형 변환을 하고, 원하지 않는 종류의 객체가 포함되는 것을 막을 방법이 없다는 문제가 있습니다. 이러한 문제들을 제네릭이 해결해 줍니다. 2. 제네릭 클래스 2-1. 제네릭 클래스의 선언 제네릭 클래스는 타입 파라미터를 사용하여 선언하되, 클래스 이름 뒤에 기호를 ..
-
[Java] 컬렉션 프레임워크 4 (Map, HashMap 중심으로)IT Study/컴퓨터 기초 2023. 3. 29. 19:14
1. Map 인터페이스란? Map 인터페이스는 키-값 쌍의 데이터를 저장하는 컬렉션 프레임워크입니다. 각 키(Key)는 유일해야 하지만, 값(Value)은 중복이 가능하다는 특징을 가집니다. (저장 순서는 보장하지 않습니다.) → 따라서 키(Key)를 통해 값(Value)을 검색할 수 있습니다. (Key, Value null 가능) 더하여 Key-Value 쌍을 entry(엔트리)라고 합니다. ☑️ 아래의 Entry 인터페이스와 이름이 동일하기 때문에 헷갈릴 수 있습니다. Entry 인터페이스는 인터페이스라는 정확한 명칭을 붙여 설명할테니, 그냥 엔트리라고 적혀있다면 키-값 쌍으로 생각해주세요. 1-1. Map.Entry 인터페이스 Entry 인터페이스는 Map.Entry라는 이름으로 java.util ..