분류 전체보기

    You can not write Java code without defining a class.

    좀 뜬금없지만, 클래스 없이 자바를 쓸 수 있을까...? 🤔 Yes, you need at least one class to have a program, but no, you do not need any methods (contrary to some other answers). The reason you need a class is because in Java, all code is inside classes. So to have any code, you need a class. However, code doesn't necessarily need to be in a method. It can also be in initializers. So, here is a complete Java progr..

    [java-live-study] 🔥 4주차 과제: 제어문

    백기선 님이 유튭에서 진행하는 JAVA Live-study 과정을 기록한다. 매 주 이슈에 올라온 질문들에 대해 공부하고 답을 남기고, 이슈에 링크를 공유하는 방식으로 진행된다. 추후 백기선 님의 유튜브 라이브를 통해 피드백을 받게 된다. 즉, Java 공부를 기록하는 과정이다 🌱 📌 목표 자바가 제공하는 제어문을 학습하세요. 📌 학습할 것 (필수) 선택문 반복문 제어문이란? 제어문(Control-flow statement)은 프로그램의 실행 순서를 제어할 수 있게 한다. Java의 제어문은 decision making, branching, looping, conditional block이 있다. (이미지 출처: https://soshace.com/wp-content/uploads/2020/01/unti..

    [Spring] Error: Could not find or load main class

    때론 해답은 매우 가까운 곳에 있을 수도... Spring Boot + Gradle로 박재성 님의 질문/답변 게시판을 구현하는 중, 잘 되다가 갑자기 이미지와 같은 에러가 발생했다. Error: Could not find or load main class net.slipp.MySlippApplication Caused by: java.lang.ClassNotFoundException: net.slipp.MySlippApplication 아니 멀쩡히 잘 되다가 눈 앞에 보이는 메인 클래스를 못 찾는다고?!!! 이런 방법 저런 방법 온갖 구글링을 하며 찾아봤지만, 전혀 해결되지 않았다. 새 프로젝트만 몇 개를 새로 생성하고 지웠는지 모르겠다. 알고 보니, 프로젝트 진행 도중에 폴더 내부로 경로를 변경했던 것..

    [BOJ] 백준 2887 행성 터널 / 최소 신장 트리(MST), 크루스칼

    💣 문제 이해 x, y, z 좌표로 행성의 위치가 주어지고(노드), 그 행성들 사이의 거리가 가중치가 된다(간선). 행성과 행성 사이의 거리는 문제에 주어진 조건처럼 min(abs(x1-x2), abs(y1-y2), abs(z1-z2))가 된다. 이 문제는 크루스칼 알고리즘으로 풀이했다. 💭 풀이 과정 작성 언어: C++ #include #include #include #include using namespace std; class Planet { public: int x, y, z, index; Planet(int x, int y, int z, int index) { this->x = x; this->y = y; this->z = z; this->index = index; } }; class Tunne..

    [프로그래머스] 가장 먼 노드 / 최단 경로, 다익스트라

    💣 문제 이해 한 출발 정점에서 다른 모든 정점으로의 최단 경로 이동 비용을 계산하는 문제였다. 각 노드로 이동하는 최소 비용을 계산하여 그중 최대를 구한 후, 동일한 비용을 지불하는 경로의 수를 카운트 했다. 이 문제는 다익스트라 알고리즘으로 풀이했다. 💭 풀이 과정 작성 언어: C++ #include #include #include using namespace std; const int MAX = 20001; const int INF = 1e9; int dist[MAX] = {0, }; int solution(int n, vector edge) { int max_cost = 0; int result = 0; priority_queuepq; // 비용, 노드번호 vectornodes[n+1]; // 각..

    [BOJ] 백준 1647 도시 분할 계획 / 최소 신장 트리(MST), 크루스칼

    💣 문제 이해 최소 신장 트리를 구한 뒤, 마을을 두 개로 분할할 수 있도록 도로를 제거하여 총 유지비가 최소가 되도록 하면 된다. 이 문제는 크루스칼 알고리즘으로 풀이했다. 💭 풀이 과정 작성 언어: C++ #include #include #include using namespace std; class Road { public: int start, dest, weight; Road(int start, int dest, int weight) { this->start = start; this->dest = dest; this->weight = weight; } }; const int MAX = 1001; int home_cnt, road_cnt; vector roads; vector survived_lin..

    [BOJ] 백준 1922 네트워크 연결 / 최소 신장 트리(MST), 크루스칼

    💣 문제 이해 컴퓨터를 노드로, 선 연결을 간선으로 보고 주어진 그래프에서 최소 신장 트리(MST)의 합을 구하는 문제였다. 틀은 바뀌었지만 1197번 최소 스패닝 트리 와 그냥 동일하게 풀리는 문제이다. 크루스칼 알고리즘/프림 알고리즘 두 가지 방법으로 풀 수 있다. 이 문제는 크루스칼 알고리즘으로 풀이했다. 💭 풀이 과정 작성 언어: C++ #include #include #include using namespace std; class Line { public: int start, dest, weight; Line(int start, int dest, int weight) { this->start = start; this->dest = dest; this->weight = weight; } }; co..

    [BOJ] 백준 14503 로봇 청소기 / 구현

    💣 문제 이해 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 벽 또는 빈 칸이다. 청소기는 바라보는 방향이 있으며, 이 방향은 동, 서, 남, 북중 하나이다. 지도의 각 칸은 (r, c)로 나타낼 수 있고, r은 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로부터 떨어진 칸의 개수이다. 로봇 청소기는 다음과 같이 작동한다. 현재 위치를 청소한다. 현재 위치에서 현재 방향을 기준으로 왼쪽방향부터 차례대로 탐색을 진행한다. 왼쪽 방향에 아직 청소하지 않은 공간이 존재한다면, 그 방향으로 회전한 다음 한 칸을 전진하고 1번부터 진행한다. 왼쪽 방향에 청소할 공간이 없다면, 그 방향으로 회전하고 2번으로 돌아간다. 네 방향 모두 ..

    [BOJ] 백준 2606 바이러스 / 너비 우선 탐색(BFS)

    💣 문제 이해 1번 컴퓨터에 바이러스가 감염되면 이와 연결되어 바이러스에 감염되는 컴퓨터의 수를 구하는 문제이다. 1번 컴퓨터(노드)에 연결된 컴퓨터(노드) 개수를 구하면 된다. 너비 우선 탐색(BFS) 기법으로 풀이했다. 💭 풀이 과정 작성 언어: C++ #include #include #include using namespace std; int visited[101] = {0, }; int bfs(deque nodes) { int virused = 0; deque queue; // 1번 컴퓨터에서 시작, 방문 처리 queue.push_back(1); visited[1] = 1; while (!queue.empty()) { int now_node = queue.front(); queue.pop_fron..

    [2020 KAKAO BLIND RECRUITMENT] 문자열 압축

    💣 문제 이해 문자열 처리를 필요로 하는 문제이다. 주어진 문자열에서 1개 단위, 2개 단위, 3개 단위, 등으로 문자열을 자를 때, 연속된 문자열을 2a2ba3c와 같이 압축한다. 연속된 문자가 1 자리인 경우, 앞에 숫자를 생략하고 문자만 기입한다. 💭 풀이 과정 작성 언어: Python3 def solution(s): answer = 9999 size = len(s) # 한 자리 문자열의 경우 바로 결과 출력 if size == 1: return 1 for i in range(1, size // 2 + 1): temp = s[:i] count = 0 compressed = '' for x in range(0, size, i): if s[x:x + i] == temp: count += 1 else: ..