자바

    백준 1193, 분수찾기

    시간제한 : 0.5 초 (추가 시간 없음) 문제 무한히 큰 배열에 다음과 같이 분수들이 적혀있다. 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … … 3/1 3/2 3/3 … … … 4/1 4/2 … … … … 5/1 … … … … … … … … … … … 이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자. X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. 출력 첫째 줄에 분수를 출력한다. 예제입력 예제출력 1 1/1 2 1/2 3 2/1 4 3/1 5 2/2 6 1/3 7 1/4..

    백준 2292, 벌집

    백준 2292, 벌집

    문제 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다. 입력 첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진다. 출력 입력으로 주어진 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 출력한다. 예제입력 예제출력 13 3 문제풀이 어떻게 풀까 많은 고민을 했다... 1. 1,000,000,000 / 6 = 166,666,666 /..

    백준 1316, 그룹 단어 체커

    문제 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다. 단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 단어의 개수 N이 들어온다. N은 100보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 단어가 들어온다. 단어는 알파벳 소문자로만 되어있고 중복되지 않으며, 길이는 최대 100이다. 출력 첫째 줄에 그룹 단어의 개수를 출력한다. 예제입력 예제출력 3 happy new year 3 4 aba ..

    백준 4673, 셀프 넘버

    문제 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다. 예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런식으로 다음과 같은 수열을 만들 수 있다. 33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, 141, ... n을 d(n)의 생성자라..

    백준 2439번, 별 찍기 - 2

    문제 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오. 입력 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다. 출력 첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다. 예제입력 예제출력 5 * ** *** **** ***** 문제풀이 해당 문제는 일반 별 찍기인 1, 2, 3, 4, 5로 상승하는 것을 응용하면 되겠다. 추가 팁으로는 마지막번째 별을 제외하고는 앞에 공백이 있다는 것을 유념해야 한다. 위 예제 출력을 직접적으로 보자면 00001 00011 00111 01111 11111 다음과 같이 이루어져 있다. 첫번째 열의 경우 5번의 반복을 하되, 4번의 공백을 1번의 별표를 표시해야 한다. 순서대로 두..

    자바 기초 다지기 - 6 (Thread, Syncronized, Serializable, IO, NIO)

    Thread와 Runnable Thread는 하나의 프로세스 안에서 여러 개 생성되고 고객이 필요에 따라 이 Thread를 사용하고 작업이 끝날 경우 반납한다고 생각하면 되겠다. Runnable : Thread의 인터페이스 Thread Class: Runnable의 구현체 Thread의 실행 방법 run() 메소드로 구현이 가능하며 start()로 실행이 가능하다. Thread에 주요 메소드 Thread.sleep(1/1000초) : 쓰레드를 잠재운다. Thread.join() : 쓰레드가 끝날 때까지 기다린다. Thread.interrupt() : 쓰레드를 정지 시키고자 할 때 사용하는 메소드로서, 쓰레드가 일시 정지 상태일 경우 에러를 발생시켜 run() 메소드를 정상 종료 시킨다. Thread De..

    자바 기초 다지기 - 5 ( Generic, Collection, Map )

    실수를 방지하도록 도와주는 제네릭 정확히는 타입의 형 변환의 실수를 사전에 방지하도록 만들어졌다 즉, 런타임이 아닌 컴파일 단계에서 잘못되었음을 알 수 있다. @Getter @Setter @Builder @ToString public class TestDTO { private String name; private int age; } public class GenericTest{ public GenericTest(){ List list = List.of(TestDTO.builder().name("이름").age(10).build()); System.out.println(list.toString()); } } Generic 타입의 이름 정하기 규칙 E : 요소 K : 키 N : 숫자 T : 타입 V : 값 ..

    자바 기초 다지기 - 3 (API, Object, 추상, final, Enum, 예외, String)

    자바에서 API란? API (Application Programming Interface ) 애플리케이션에 선언되어 있는 클래스와 메소드에 대한 상세한 설명이 포함된 문서 문서를 자동으로 생성하는 명령어 : javadoc API 왼쪽 위에 제공하는 창 : 패키지 목록 API 왼쪽 아래 제공하는 창 : 클래스 목록 API 우측 본문 : 상세설명 Deprecatied : 더이상 사용하지 않는 레거시 BigDecimal 숫자를 정밀하게 저장,표현하는 클래스 생성자 : 16개 abs() : 절대값 표현 subtract : 빼기 구현 dvide : 나눗셈 모든 자바 클래스의 부모 클래스는 Object다( java.lang.Object ) 모든 클래스는 아무 상속을 받지 않았을 때 자동으로 Object 클래스를 자..