분류 전체보기

    [구름톤 챌린지] Week3 - Day14 학습일기 (작은 노드)

    📃 문제 💡 문제풀이 그래프 문제이다. 그래프 그래프는 노드와 간선으로 구성된 자료구조이다. 그래프는 인접리스트와 인접행렬 2가지 방식으로 표현할 수 있다. 인접행렬은 어떤 두 정점이 연결되어 있는지를 2차원 배열에다가 나타내는 방식이다. 정점 개수가 적고(간선 수가 많거나), 노드 간 연결 여부를 자주 확인해야 하는 경우에 유용하다. 인접리스트는 어떤 정점에서 간선으로 이동할 수 있는 정점만 관리하는 표현 방식이다. 인접 행렬은 그래프의 연결 관계를 직접적으로 나타내기는 좋지만 복잡도가 높다. 그래서 보통 알고리즘을 풀 때, 그래프를 표현한다고 하면 인접리스트 방식을 주로 사용한다. import java.io.BufferedReader; import java.io.InputStreamReader; im..

    [구름톤 챌린지] Week3 - Day12 학습일기 (발전기)

    📃 문제 💡 문제풀이 마을에 있는 집에 전력을 공급하기 위해서 그 집에 발전기를 설치하거나, 상하좌우로 인접한 집 중 하나가 전력을 공급받고 있으면 된다. 즉, BFS 방식을 이용해서 문제를 해결하면 된다. BFS (Breadth-First Search, 너비 우선 탐색) BFS는 재귀적으로 동작하지 않고 방문한 노드들을 차례로 저장한 후 꺼낼 수 있는 선입선출(FIFO, First In First Out) 방식인 큐(Queue) 자료구조를 사용하여 '넓게' 탐색한다. 시작 정점으로부터 가까운 정점을 먼저 방문하고 멀리 떨어져 있는 정점을 나중에 방문하기 때문에 주로 두 노드 사이의 최단 경로를 찾거나, 가장 짧은 경로를 찾는 문제에 주로 사용한다. 💻 제출코드 import java.io.*; impor..

    [구름톤 챌린지] Week1 - Day5 학습일기 (이진수 정렬)

    📃 문제 💡 문제풀이 배열을 두 가지 조건으로 내림차순 정렬하는 것이 이 문제의 핵심이다. Comparator 객체를 사용하여 문제를 풀어보았다. Comparator Comparator 인터페이스는 Java에서 객체들을 서로 비교할 때 사용되는 메커니즘을 제공하는 인터페이스이다. 이를 통해 정렬이나 순서 지정을 수행할 수 있다. 구현 방법 1. Comparator 객체 생성: 다중 조건으로 비교할 Comparator 객체를 생성한다. compare 메서드를 오버라이드하여 두 객체를 비교하고, 비교 결과에 따라 음수, 0, 양수 값을 반환하도록 구현한다. compare 메서드 작성법: 음수: 첫 번째 객체 두 번째 객체 양수..

    [구름톤 챌린지] Week1 - Day4 학습일기 (완벽한 햄버거 만들기)

    📎 서론 구름톤 챌린지란, 알고리즘 문제를 평일에 딱 1 문제만 푸는 챌린지이다. 평일 오전 10시에 문제가 공개되고, 문제가 공개된 지 48시간 안에 문제를 해결하면 된다. 그럼 챌린지 시작해 보자🏃‍♂️🏃‍♂️ 구름톤 챌린지 구름LEVEL 알고리즘 먼데이 챌린지가 구름톤 챌린지로 새롭게 찾아왔습니다. 온라인 알고리즘 문제 풀이와 오프라인 팀 챌린지를 모두 즐길 수 있는 구름톤 챌린지와 4주 동안 매일 꾸준히 성장 9oormthonchallenge.oopy.io 📃 문제 💡 문제풀이 맛의 정도가 가장 높은 재료를 기준으로 좌우로 정렬되어 있는지 확인하는 문제이다. 정렬의 조건은 맛의 정도가 가장 높은 재료를 기준으로 위랑 아래로 갈수록 정수의 값이 감소하거나 같아야 한다. 💻 제출코드 import ja..

    [Tech Interview] Data Structure

    💡 HashMap vs LinkedHashMap 차이와 장단점 더보기 차이점: HashMap은 요소의 순서를 보장하지 않고, LinkedHashMap은 요소의 삽입 순서를 보장합니다. 장단점: HashMap의 장점은 빠른 검색 속도와 효율성입니다. 그러나 순서를 보장하지 않아 정렬된 결과를 얻기 어려울 수 있습니다. 반면 LinkedHashMap의 장점은 요소의 삽입 순서를 보장하여 순서가 중요한 작업에 유용합니다. 그러나 내부적으로 연결 리스트를 관리해야 하므로 삽입 작업이나 메모리 사용 면에서 약간의 오버헤드가 발생할 수 있습니다. 요악하자면, HashMap은 빠른 검색 속도와 효율성을 가지고 있으며, LinkedHashMap은 삽입 순서를 보장하며 순서가 중요한 상황에서 유용합니다. 💡 Array과..

    [Tech Interview] Database

    💡 DELETE, TRUNCATE, DROP의 차이를 설명해 주세요. 더보기 DELETE는 테이블에서 특정 레코드(행)들을 삭제합니다. 이때, 테이블의 구조나 스키마는 그대로 유지됩니다. 또한 트랜잭션을 사용할 경우 롤백을 통해 삭제 작업을 취소할 수 있습니다. TRUNCATE는 테이블의 모든 레코드를 한 번에 삭제합니다. DELETE보다 빠른 속도로 작동하며, 테이블의 스키마는 그대로 유지됩니다. 하지만 롤백이 불가능합니다. DROP은 테이블 자체(객체와 관련된 모든 것)를 완전히 삭제하고, 롤백이 불가능합니다. 💡 group by의 역할에 대해 설명해 주세요. 더보기 GROUP BY 절은 SQL에서 데이터를 특정 열 또는 열의 조합을 기준으로 그룹화하여 집계 함수를 사용해 각 그룹별로 요약된 정보를 ..

    [Tech Interview] Spring

    💡 Spring MVC 에 대해 설명해 주세요. 더보기 Spring MVC는 Spring Framework의 웹 애플리케이션 개발을 지원하는 모듈로, Model-View-Controller(MVC) 패턴을 구현한 웹 프레임워크입니다. MVC 패턴은 애플리케이션의 구조를 모델(Model), 뷰(View), 컨트롤러(Controller) 세 가지 역할로 나누어 개발합니다. Model은 애플리케이션의 비즈니스 로직과 데이터를 나타냅니다. 쉽게 말하면, 무엇을 처리할 것인지를 명시해 놓은 영역입니다. Model은 웹 응용 프로그램의 도메인 객체를 관리하고 데이터베이스와 같은 영속성 계층과 상호 작용합니다. View는 사용자에게 보여지는 데이터를 표현하는 역할을 합니다. 즉, 사용자가 보게 될 요소를 어떻게 디자..

    [프로그래머스] Lv.0 : 2의 영역

    https://school.programmers.co.kr/learn/courses/30/lessons/181894 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 💭 나의 생각 주어진 배열 안에서 2가 모두 포함된 부분 배열을 return 하는 문제이다. 나는 주어진 배열에서 숫자 "2"를 찾고, "2"를 발견할 때마다 해당 "2"를 포함한 그 이후의 연속적인 숫자들을 ArrayList인 list에 추가해 주었다. 💻 나의 코드 import java.util.ArrayList; class Solution { public int[] solution(i..

    [프로그래머스] Lv.0 : 배열 만들기 2

    https://school.programmers.co.kr/learn/courses/30/lessons/181921 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 💭 나의 생각 "0"과 "5"로만 이루어진 모든 정수를 구하면 되기 때문에 정규표현식을 사용하여 풀어보았다. 💻 나의 코드 import java.util.*; class Solution { public int[] solution(int l, int r) { ArrayList numbers = new ArrayList(); for (int i = l; i

    [Tech Interview] Java

    💡 오버라이딩과 오버로딩 더보기 1. 오버라이딩(Overriding) : 오버라이딩은 서브 클래스(subclass)가 상위 클래스(superclass)로부터 상속받은 메소드를 자신만의 버전으로 다시 구현하는 과정입니다. 즉, 메소드의 이름은 동일하게 선언되며, 매개변수와 반환 타입도 동일한 형식을 가져야 합니다. 오버라이딩을 사용하면 하위 클래스에서 상위 클래스의 메소드를 변경하거나 수정할 수 있습니다. 이는 다형성(polymorphism) 구현에 중요한 역할을 하며, 서브 클래스 객체를 바탕으로 상위 클래스의 참조 변수를 사용하여 호출 시, 실행되는 메소드가 오버라이딩된 메소드임을 보장합니다. 2. 오버로딩(Overloading) : 오버로딩은 같은 이름의 메소드를 한 클래스 내에서 여러 개 선언하는 ..