분류 전체보기

    [백준] 17478 - 재귀함수가 뭔가요? (자바/Java): 재귀 Recursion

    문제 평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대학교가 자신과 맞는가에 대한 고민을 항상 해왔다. 중앙대학교와 자신의 길이 맞지 않다고 생각한 JH 교수님은 결국 중앙대학교를 떠나기로 결정하였다. 떠나기 전까지도 제자들을 생각하셨던 JH 교수님은 재귀함수가 무엇인지 물어보는 학생들을 위한 작은 선물로 자동 응답 챗봇을 준비하기로 했다. JH 교수님이 만들 챗봇의 응답을 출력하는 프로그램을 만들어보자. 입력 교수님이 출력을 원하는 재귀 횟수 N(1 ≤ N ≤ 50)이 주어진다. 출력 출력 예시를 보고 재귀 횟수에 따른 챗봇의 응답을 출력한다. 재귀함수를 활용한 출력 문..

    [자료구조] Array, ArrayList, LinkedList

    [자료구조] Array, ArrayList, LinkedList

    목차 Array & ArrayList 배열 같은 종류의 데이터를 저장하기 위한 자료구조 index로 배열의 요소 참조 가능 크기가 고정 → overflow 위험 직관적으로 간단함 추가/제거 시 shift 필요 삽입 public void add(int index, E x) { if (this.numItems >= item.length || index this.numItems) { // 에러 처리 } else { for (int i = this.numItems - 1; i >= index; i--) { item[i + 1] = item[i]; // index에 값을 삽입하기 위해 오른쪽으로 한 칸씩 shift } item[index] = x; this.numItems++; } } ..

    [백준] 9020 - 골드바흐의 추측 (자바/Java)

    문제 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아니다. 골드바흐의 추측은 유명한 정수론의 미해결 문제로, 2보다 큰 모든 짝수는 두 소수의 합으로 나타낼 수 있다는 것이다. 이러한 수를 골드바흐 수라고 한다. 또, 짝수를 두 소수의 합으로 나타내는 표현을 그 수의 골드바흐 파티션이라고 한다. 예를 들면, 4 = 2 + 2, 6 = 3 + 3, 8 = 3 + 5, 10 = 5 + 5, 12 = 5 + 7, 14 = 3 + 11, 14 = 7 + 7이다. 10000보다 작거나 같은 모든 짝수 n에 대한 골드바흐 파티션은 존재한다. 2보다 큰 짝수..

    [백준] 4948 - 베르트랑 공준 (자바/Java)

    문제 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼프가 1850년에 증명했다. 예를 들어, 10보다 크고, 20보다 작거나 같은 소수는 4개가 있다. (11, 13, 17, 19) 또, 14보다 크고, 28보다 작거나 같은 소수는 3개가 있다. (17,19, 23) 자연수 n이 주어졌을 때, n보다 크고, 2n보다 작거나 같은 소수의 개수를 구하는 프로그램을 작성하시오. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 케이스는 n을 포함하는 한 줄로 이루어져 있다. 입력의 마지막에는 0이 주어진다. 출력 각 테스트 케이스에 대해서, n보다 크고..

    [백준] 1929 - 소수 구하기 (자바/Java): 에라토스테네스의 체

    문제 M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. 출력 한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다. 앞의 문제들처럼 풀었다가 시간 초과가 났다. 에라토스테네스의 체를 사용하는 문제였다. 에라토스테네스의 체는 소수를 구하는 알고리즘으로, 2부터 자기 자신을 제외한 자신의 배수들을 하나씩 지워나가는 알고리즘이다. 이때 끝까지 남아있는 수들이 소수에 해당한다. 그래서 먼저 배열을 선언하여 각 값을 초기화하였다. 이때 index를 그 값으로 사용하기 위해 N+1 크기의 배열을 선언하였다. 그리고 배열을 돌며 값이 0인 경우..

    [백준] 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(..

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