Java

    [백준, Java] 16928번 : 뱀과 사다리 게임

    [백준, Java] 16928번 : 뱀과 사다리 게임

    🔗 문제 링크 https://www.acmicpc.net/problem/16928 😮 문제 해결 방법 주사위를 조작할 수 있다고 문제에서 제시했기 때문에 매 위치마다 1~6번까지의 주사위를 던진 후 위치를 담은 Node 객체에 다음 위치와 다음 거리(주사위 던진 개수)를 넣어 큐에 넣어주었다. 매 주사위 굴린 후의 위치에서는 뱀과 사다리가 있는 칸인지 먼저 확인한다. 뱀과 사다리가 있는 칸인 경우 주사위를 한번 굴린 것으로 뱀과 사다리를 탄 이후의 칸으로 이동이 가능하기 때문에 뱀과 사다리 탄 이후 칸 거리 배열에 현재까지 위치의 주사위 개수 + 1을 한 값을 넣어준다. 뱀과 사다리가 없는 칸인 경우 주사위 굴린 이후의 칸 거리 배열에 현재 까지의 주사위 개수 + 1 한 값을 넣어준다. 현재 큐의 칸이 ..

    [백기선님과 함께하는 Live Study] 6주차) 상속

    [백기선님과 함께하는 Live Study] 6주차) 상속

    ✔️ 목표 자바의 상속에 대해 학습하세요. ✔️ 학습할 것 (필수) 자바 상속의 특징 super 키워드 메소드 오버라이딩 다이나믹 메소드 디스패치 (Dynamic Method Dispatch) 추상 클래스 final 키워드 Object 클래스 💡 자바 상속의 특징 상속은 객체지향 프로그래밍(OOP)의 핵심적인 특징 중 하나이다. 상속의 사전적 정의는 "뒤를 있는 일, 물려준다" 라는 뜻이다. 이러한 뜻과 비슷하게 프로그래밍에서의 상속은 부모 클래스가 자신의 기능을 자식 클래스에게 물려주는 것을 말한다. 상속에는 여러 종류가 있는데 자바는 단일 상속만을 지원한다. 📌 단일 상속과 다중 상속 단일 상속이란 자식 클래스가 하나의 부모 클래스로부터 기능을 물려받는 것을 말하며, 가장 일반적인 상속 방법이다. 반..

    [백기선님과 함께하는 Live Study] 5주차) 클래스

    [백기선님과 함께하는 Live Study] 5주차) 클래스

    ✔ 목표 자바의 Class에 대해 학습하세요. ✔ 학습할 것 (필수) 클래스 정의하는 방법 객체 만드는 방법 (new 키워드 이해하기) 메소드 정의하는 방법 생성자 정의하는 방법 this 키워드 이해하기 💡 클래스 정의하는 방법 객체지향 프로그래밍(OOP)은 현실 세계의 사물을 객체로 보고, 객체의 속성과 기능을 기반으로 프로그래밍하는 기법이다. 클래스는 객체지향 프로그래밍에서 객체를 정의해주는 틀이라고 생각하면 된다. 즉, 객체의 속성과 기능을 하나로 묶어놓은 틀이다. 자바에서 클래스는 필드, 생성자, 메소드로 구성된다. 필드(멤버 변수) : 객체지향에서 속성에 해당하며 멤버 변수라고도 한다. 생성자 : 변수에 초기값을 대입하여 사용하듯 클래스에도 동일한 형식으로 생성해 초기화를 해주는 역할을 한다. ..

    [백준, Java] 1967번 : 트리의 지름

    [백준, Java] 1967번 : 트리의 지름

    🔗 문제 링크 https://www.acmicpc.net/problem/1967 😮 문제 해결 방법 Map을 이용해 트리를 만들어 준다. 문제에서 루트노드가 1이라고 주어졌기 때문에 루트 노드를 이용해 가장 멀리 있는 노드를 먼저 탐색한다. 가장 먼 노드를 찾았다면, 해당 노드로 다시 가장 먼 노드를 탐색하면 노드와 노드간 가장 먼 지름이 탐색된다. 루트 노드를 이용해 DFS 탐색 및 가장 먼 노드 찾기 탐색한 가장 먼 노드를 이용해 다시 한번 DFS 탐색 및 지름 갱신 🚩 Java 코드 package com.algorithm.Baekjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReade..

    [백준, Java] 1068번 : 트리

    [백준, Java] 1068번 : 트리

    🔗 문제 링크 https://www.acmicpc.net/problem/1068 😮 문제 해결 방법 Map을 이용해 구현에 필요한 트리를 만들어 준 후 DFS를 이용해 루트 노드부터 탐색한다. Map에서 현재 노드에 해당하는 리스트가 없는 경우는 단말 노드이기 때문에 단말 노드 카운트를 증가시킨다. 현재 노드가 삭제할 노드인 경우는 다음 노드들은 모두 삭제 되므로 그대로 return한다. 만약 현재 노드에서 연결된 자식 노드가 삭제되는 노드이면서 단말 노드인 경우는 삭제 후 현재 노드가 단말노드가 되기 때문에 단말 노드 카운트를 증가시킨다. 🚩 Java 코드 package com.algorithm.Baekjoon; import java.io.BufferedReader; import java.io.IOEx..