자바

    [백준] 2581 - 소수 (자바/Java)

    문제 자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로, 이들 소수의 합은 620이고, 최솟값은 61이 된다. 입력 입력의 첫째 줄에 M이, 둘째 줄에 N이 주어진다. M과 N은 10,000이하의 자연수이며, M은 N보다 작거나 같다. 출력 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. 1978 소수 찾기와 유사하다. 단 소수를 ..

    [자바/Java] 예외 처리 (Exception)

    목차 에러와 예외 어떤 원인에 의해 오동작하거나 비정상적으로 종료되는 경우 Error 메모리 부족, stack overflow와 같이 일단 발생하면 복구할 수 없는 상황 프로그램의 비정상적 종료를 막을 수 없음 → 디버깅 필요 Exception 읽으려는 파일이 없거나, 네트워크 연결이 안 되는 등 수습될 수 있는 비교적 상태가 약한 것들 프로그램 코드에 의해 수습될 수 있는 상황 예외처리란? 예외 발생 시 프로그램의 비정상 종료를 막고 정상적인 실행 상태를 유지하는 것 예외의 감지 및 예외 발생 시 동작할 코드 작성 필요 예외 처리 키워드 try-catch try { // 예외가 발생할 수 있는 코드 } catch (Exception e) { // 예외가 발생했을 때 처리할 코드 } // try-catc..

    [자바/Java] 직렬화와 역직렬화, ObjectInputStream ObjectOutputStream, Serializable

    목차 출처 https://steady-coding.tistory.com/576 https://hub1234.tistory.com/26 https://velog.io/@wansook0316/Serialization-Deserialization https://flowarc.tistory.com/entry/Java-객체-직렬화Serialization-와-역직렬화Deserialization 데이터 직렬화와 역직렬화 데이터 직렬화 메모리를 디스크에 저장하거나, 네트워크 통신에 사용하기 위한 형식으로 변환하는 것 데이터 역직렬화 디스크에 저장한 데이터를 읽거나, 네트워크 통신으로 받은 데이터를 메모리에 쓸 수 있도록 변환하는 것 직렬화가 필요한 이유 값 형식 데이터 스택에 메모리가 쌓이고, 값으로 직접 접근이 가능..

    [자바/Java] 객체 참조 시 인터페이스 사용 이유

    [자바/Java] 객체 참조 시 인터페이스 사용 이유

    참고 링크 https://okky.kr/article/546389 OKKY | ArrayList를 사용할 때 레퍼런스 변수를 List 타입으로 만드는 이유가 궁금합니다. 안녕하세요. 1년차 새내기 개발자입니다. 회사에서 자바를 사용하는데, 제가 써 본 적이 없어서 처음부터 공부하는 중입니다. List String list new ArrayList String (); 공부하면서 예제를 보니 위와 같은 okky.kr Collection이나 Class를 공부하면서, 객체를 참조할 때 그 클래스가 아닌 인터페이스를 참조하는 경우가 많음을 알게 되었다. 그냥 인스턴스의 클래스를 참조하면 될 것 같은데 왜 인터페이스를 사용하는지 궁금해서 찾아보았다. 형태 변형이 자유롭다 List 인터페이스에 있는 ArrayList..

    [백준] 1978 - 소수 찾기 (자바/Java)

    문제 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오. 입력 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. 출력 주어진 수들 중 소수의 개수를 출력한다. 소수는 1과 자기 자신만을 약수로 갖는 1보다 큰 자연수이다. 그러므로 자기 자신보다 작고 2보다 크거나 같은 수 중에 나머지가 0인 수가 없으면 소수가 된다. 숫자가 1이거나, 약수를 가지는 경우에는 cnt를 더하지 않았고 아닌 경우에만 cnt를 더해 소수의 수를 구하였다. package boj0728; import java.util.Scanner; public class BOJ_1978_소수찾기 { public static void main(..

    [백준] 10814 - 나이순 정렬 (자바/Java)

    문제 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 온라인 저지 회원의 수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄부터 N개의 줄에는 각 회원의 나이와 이름이 공백으로 구분되어 주어진다. 나이는 1보다 크거나 같으며, 200보다 작거나 같은 정수이고, 이름은 알파벳 대소문자로 이루어져 있고, 길이가 100보다 작거나 같은 문자열이다. 입력은 가입한 순서로 주어진다. 출력 첫째 줄부터 총 N개의 줄에 걸쳐 온라인 저지 회원을 나이 순, 나이가 같으면 가입한 순으로 한 줄에 한 명씩 나이와 이름을 공백으로 구분해 출력한다. 수업..

    [자바/Java] 제네릭 Generics

    제네릭 Generics 다양한 타입의 객체를 다루는 메서드, 컬렉션 클래스에서 컴파일 시에 타입을 미리체크하는 것 Generic이 아닐 경우, 클래스에 모든 타입이 들어갈 수 있어 입력 시 편리하지만, 이후 클래스를 이용할 때 불편함 미리 사용할 타입을 명시 → 형 변환을 하지 않아도 됨 객체의 타입에 대한 안전성 향상 및 형 변환의 번거로움 감소 표현 클래스또는 인터페이스 선언 시 에 타입 파라미터 표시 타입 파라미터 T : reference Type E: Element K : Key V : Value Class_Name generic = new Class_Name(); Class_Name generic2 = new Class_Name(); // 생성 쪽에 쓰지 않으면 알아서 같은 타입으로 Type p..

    [백준] 2839 - 설탕 배달 (자바/Java)

    https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1..

    [백준] 1065 - 한수 (자바/Java)

    https://www.acmicpc.net/problem/1065 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 www.acmicpc.net 문제 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다. 출력 첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다. ..

    [백준] 1181 - 단어 정렬 (자바/Java) : Comparator

    문제 알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오. 길이가 짧은 것부터 길이가 같으면 사전 순으로 입력 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. 출력 조건에 따라 정렬하여 단어들을 출력한다. 단, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력한다. Comparator를 이용하여 String을 비교하는 compareTo() 메소드를 override 하였다. 먼저 길이를 비교하고, 길이가 같으면 그때 사전순으로 (기존 String 비교 방식) 비교하도록 구현하였다. 또한 출력할 때..

출처: https://gmnam.tistory.com/157 [Voyager:티스토리]