인기 게시글

[Java] 프로그래머스: 게임 맵 최단거리

https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이방법사용된 것:BFS     2025.03.28BFS 문제이다.각 칸의 정보는 길이가 3인 int 배열로 표현할 수 있다.이 배열의 요소들은 각각 {행 인덱스, 열 인덱스, 출발점에서 해당 칸까지 오는 동안 거쳐온 칸 수}따라서, Queue를 사용해 BFS를 구현하면 된다. answer의 값을 -1로 초기화한다.목적지에 도달하는 순간, 그곳까지 오는 동안 거쳐온 칸 수를 answer에 넣어준다. BFS가 끝난 후 answer을 리턴해준다.만약..

프로그래머스 2025.03.28 0

[MySQL] 프로그래머스: 대장균들의 자식의 수 구하기

https://school.programmers.co.kr/learn/courses/30/lessons/299305 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이방법 2025.03.271. LEFT JOIN을 한다.좌측 테이블: ECOLI_DATA우측 테이블: ECOLI_DATA를 PARENT_ID 기준으로 GROUP지은 뒤, 각 그룹별 행 수를 COUNT한다. 이때 PARENT_ID가 NULL인 그룹은 만들지 않는다. 즉, HAVING 절을 사용하여 NULL인 경우를 제외해줘야 한다.JOIN 기준: 좌측 테이블의 ID = 우측 테이블의 PARENT_ID결과: ECOLI_DATA에 자식 개수 열이..

SQL: 비트연산자의 이해

a = 60, b = 13 이라고 하자.두 수를 이진수로 변환하면 다음과 같다.a = 0011 1100b = 000 1101이 두 수를 사용한 예와 함께 아래의 비트연산자를 이해해보자. 연산자역할a, b를 사용한 예&AND 연산. 두 수 모두에서 1인 자리만 1로 판단한다.a & b = 12a와 b에서 모두 1인 자리만 1로 표시하면 0000 1100이다.0000 1100를 십진수로 변환한 12가 결과값으로 도출된다.|OR 연산. 두 수 중 하나에서라도 1인 자리를 모두 1로 판단한다.a | b = 61a와 b 중 하나에서라도 1인 자리를 모두 1로 표시하면 0011 1101이다.0011 1101을 십진수로 변환한 61이 결과값으로 도출된다.^XOR 연산. 두 수 중 하나에서만 1인 자리를 모두 1로 판..

SQL 일반 2025.03.27 0

[Java] 프로그래머스: 완주하지 못한 선수

https://school.programmers.co.kr/learn/courses/30/lessons/42576 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  풀이방법 2025.03.27참가자 명단에는 있지만 완주자 명단에는 없는 선수의 이름을 찾아내야 한다.그 선수는 반드시 한 명이다. 명단에는 동명이인이 존재할 수 있다. 따라서 Set을 썼다가는 동명이인을 잡아내지 못해 틀릴 가능성이 높다. 푸는 과정에서, 정확도 테스트를 모두 통과한 코드를 총 4가지 작성해보았다. 아래와 같다. 첫 번째 시도: ArrayList 사용참여자 명단의 모든 요소를 ArrayList에 넣은 뒤, 완주자 명단의 모든 ..

프로그래머스 2025.03.27 0

최근 게시글

more

[Java] 프로그래머스: 게임 맵 최단거리

https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이방법사용된 것:BFS     2025.03.28BFS 문제이다.각 칸의 정보는 길이가 3인 int 배열로 표현할 수 있다.이 배열의 요소들은 각각 {행 인덱스, 열 인덱스, 출발점에서 해당 칸까지 오는 동안 거쳐온 칸 수}따라서, Queue를 사용해 BFS를 구현하면 된다. answer의 값을 -1로 초기화한다.목적지에 도달하는 순간, 그곳까지 오는 동안 거쳐온 칸 수를 answer에 넣어준다. BFS가 끝난 후 answer을 리턴해준다.만약..

프로그래머스 2025.03.28 0

[MySQL] 프로그래머스: 대장균들의 자식의 수 구하기

https://school.programmers.co.kr/learn/courses/30/lessons/299305 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이방법 2025.03.271. LEFT JOIN을 한다.좌측 테이블: ECOLI_DATA우측 테이블: ECOLI_DATA를 PARENT_ID 기준으로 GROUP지은 뒤, 각 그룹별 행 수를 COUNT한다. 이때 PARENT_ID가 NULL인 그룹은 만들지 않는다. 즉, HAVING 절을 사용하여 NULL인 경우를 제외해줘야 한다.JOIN 기준: 좌측 테이블의 ID = 우측 테이블의 PARENT_ID결과: ECOLI_DATA에 자식 개수 열이..

SQL: 비트연산자의 이해

a = 60, b = 13 이라고 하자.두 수를 이진수로 변환하면 다음과 같다.a = 0011 1100b = 000 1101이 두 수를 사용한 예와 함께 아래의 비트연산자를 이해해보자. 연산자역할a, b를 사용한 예&AND 연산. 두 수 모두에서 1인 자리만 1로 판단한다.a & b = 12a와 b에서 모두 1인 자리만 1로 표시하면 0000 1100이다.0000 1100를 십진수로 변환한 12가 결과값으로 도출된다.|OR 연산. 두 수 중 하나에서라도 1인 자리를 모두 1로 판단한다.a | b = 61a와 b 중 하나에서라도 1인 자리를 모두 1로 표시하면 0011 1101이다.0011 1101을 십진수로 변환한 61이 결과값으로 도출된다.^XOR 연산. 두 수 중 하나에서만 1인 자리를 모두 1로 판..

SQL 일반 2025.03.27 0

[Java] 프로그래머스: 완주하지 못한 선수

https://school.programmers.co.kr/learn/courses/30/lessons/42576 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  풀이방법 2025.03.27참가자 명단에는 있지만 완주자 명단에는 없는 선수의 이름을 찾아내야 한다.그 선수는 반드시 한 명이다. 명단에는 동명이인이 존재할 수 있다. 따라서 Set을 썼다가는 동명이인을 잡아내지 못해 틀릴 가능성이 높다. 푸는 과정에서, 정확도 테스트를 모두 통과한 코드를 총 4가지 작성해보았다. 아래와 같다. 첫 번째 시도: ArrayList 사용참여자 명단의 모든 요소를 ArrayList에 넣은 뒤, 완주자 명단의 모든 ..

프로그래머스 2025.03.27 0

1주차: 그리디 - 사전 문제 풀이

백준, 프로그래머스 등에서 제공되는 문제의 경우 문제 링크를 첨부하고,도서에 수록된 문제의 경우 문제 본문을 간략화하여 옮겨적는다.공통문제 1) 1이 될 때까지(도서 p.99에 수록)두 수 N과 K가 주어진다.2 ≤ N ≤ 100,0002 ≤ K ≤ 100,000N이 1이 될 때까지 다음의 두 동작 중 한 가지를 최소 몇 번 수행해야 하는지 구하시오.N에서 1을 뺀다.N을 K로 나눈다. 풀이N의 값을 업데이트해가며, N의 값이 1이 될 때까지 다음을 반복 수행한다.현재 N의 값이 K의 배수일 경우, N을 K로 나눈다.현재 N의 값이 K의 배수가 아니며 K보다 작을 경우, N이 1이 될 때까지 N에서 1을 뺀다.현재 N의 값이 K의 배수가 아니며 K보다 클 경우, N이 K의 배수가 될 때까지 N에서 1을..

#1541: 잃어버린 괄호

풀이방법사용된 것:그리디파싱    2025.03.07마이너스 기호가 등장하기 전까지는 모든 정수를 덧셈한다.마이너스 기호가 한 번이라도 등장하면, 그 뒤로는 모든 정수를 뺄셈한다.   코드Java(2025.03.07)import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Main { public static void main(String[] args) throws IOException { int answer = 0; // 입력값 읽어오기 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));..

백준 2025.03.07 0

0주차: 스터디그룹에 관하여

개요친구들과 알고리즘 스터디그룹을 시작하였다.동아리에서 처음 만나, 졸업프로젝트와 도전학기를 함께 성공적으로 마치고, 사이드프로젝트까지 함께하고 있는 친구들이다. 스터디 규칙매주 한 가지의 알고리즘 카테고리를 정한다.해당 카테고리에서 다음과 같이 문제를 풀어온다.공통 문제 2개개인 문제 1개 이상매주 있는 정기모임에서, 작성해온 코드를 공유하고 설명한다. 다짐취업준비 시작에 맞추어 알고리즘 복습이 필요했기 때문에, 스터디를 시작하게 되었다.이 스터디를 동기로 삼아 제대로 복습하고, 더 어려운 알고리즘에도 도전해보자!

스프링 부트 테스트 코드에서 @Value가 작동하지 않는 문제 해결법

문제상황실제 서버를 작동시켰을 때에는 잘 작동하던 @Value가, 테스트 코드를 돌릴 때에는 작동하지 않는 문제가 발생했다!문제가 발생한 코드는 다음과 같다. Account.java(테스트의 대상이 되는 코드)package 내 프로젝트의 패키지 경로;import lombok.AccessLevel;import lombok.Builder;import lombok.Getter;import lombok.NoArgsConstructor;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.core.env.E..

TDD 2024.06.13 1

#11723 : 집합

풀이방법 사용된 것: 구현 2023.09.20 실제로 Set을 선언하여 구현하면 시간초과가 발생한다. 이번에는 1차원 Boolean 배열을 사용하여 해결하였다. 후에 비트마스크를 사용해서도 시도해보겠다. 코드 Java(2023.09.20) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.HashSet; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException{ // TODO..

백준 2023.09.20 0

#18110 : solved.ac

풀이방법 사용된 것: 수학 구현 정렬 2023.09.20 의견의 개수 N이 0이라면, 0을 출력하고 프로그램을 종료한다. 의견의 개수 N이 1 이상이라면, 다음을 수행한다. N의 0.15배를 계산하여 이를 반올림한다. 이 결과를 M이라 하자. 모든 의견을 오름차순으로 정렬한 배열에서, 인덱스 M부터 N-M-1까지를 더한 후, 그 값을 2M으로 나눈 후 반올림한다. 코드 Java(2023.09.20) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class Main { public static void main(String[] ar..

백준 2023.09.20 0

입력값의 제공 횟수가 정해져있지 않을 때의 해결법 (백준 기준)

백준 문제를 풀다 보면, 입력값의 제공 횟수가 정해져있지 않은 문제가 자주 등장한다. 예를 들면 다음 문제와 같다. https://www.acmicpc.net/problem/4436 4436번: 엘프의 검 중간계에 살고있는 엘프 종족은 특정 숫자를 다른 숫자보다 중요하다고 믿는다. 따라서, 그들은 금속 n만큼을 이용해서 칼을 만들 때, 두께를 다음과 같은 규칙을 지키는 k로 한다면, 엄청나게 www.acmicpc.net 본 문제에서는 한 줄에 하나씩 입력값이 주어진다. 단, 총 몇 줄의 입력값이 주어지는지는 정해져있지 않다. 따라서 계속해서 반복문을 돌리며 입력을 받다가, 입력값이 null이 되는 순간 작동을 종료해야 한다. 예를 들면 다음과 같이 하면 된다. import java.io.BufferedR..

Java 일반 2023.09.05 0

#5358 : Football Team

풀이방법 2023.09.05 주어진 문자열에서, i는 e로 바꾸고 e는 i로 바꾸고 I는 E로 바꾸고 E는 I로 바꾸어 출력하는 문제이다. 조건문을 사용하여 문자열의 모든 문자를 확인한 후, i, e, I, E에 해당하는 문자가 발견될 경우 변경하면 된다. 코드 Java(2023.09.05) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException{ // TODO Auto-generated method stub BufferedReader br = new Buf..

백준 2023.09.05 0

8장 프록시와 연관관계 관리

주요 내용 요약 프록시: 프록시란 무엇인가? 어떻게 작동하고 사용하는가? 즉시 로딩과 지연 로딩: 즉시 로딩과 지연 로딩은 무엇인가? 각각 어느 상황에 사용해야 알맞은가? 이를 언제 판단하는 것이 좋은가? 컬렉션 래퍼는 무엇인가? 영속성 전이: 영속성 전이란 무엇인가? 종류는 어떠한가? 고아 객체: 고아 객체란 무엇인가? JPA가 고아 객체를 자동으로 삭제하게 하려면 어떻게 해야 하는가? 프록시 한 마디로 정리하자면, 실제 클래스를 상속 받아 만들어진 가짜 객체이다. 여러 데이터 A와 B가 서로 연관관계를 가질 때, A를 조회할 때마다 이에 연결된 B 데이터까지 무조건 함께 조회할 필요가 있을까? 그렇게 하면 어플리케이션의 효율이 떨어질 위험이 있다. 이럴 때, 연관된 객체의 조회를 미루어두기 위해 사용..

Spring Security (멋쟁이사자처럼 영상강의) 실습 기록

팀 프로젝트에서 회원가입,로그인 파트를 맡게 되었다. 이를 위해 Spring Security를 배워야 해서 구글링을 하다가, 다음의 플레이리스트를 발견했다. https://www.youtube.com/playlist?list=PLAdQRRy4vtQTJawYfraUTUf6rCfWFYqKj 멋쟁이 사자처럼 백엔드 www.youtube.com 우리 팀 프로젝트와 버전 차이가 크지 않아 나에게 딱 맞는 강의였다. 강의의 내용도 좋았다. 이 게시글은 이 플레이리스트의 40번 강의부터 52번 강의까지를 들으며 진행한 실습 내용 기록이다. 프로젝트 생성 Spring Initializr (https://start.spring.io/) 를 이용하여 다음과 같은 프로젝트를 생성하였다. 일부러 강의가 아닌 우리 팀 프로젝트..

기타 2023.07.15 0

CD/CI 세션 개념정리

CD/CI란 CI: Continuous Integration, 지속적인 코드 통합 CD: Continuous Delevery/Deploy, 지속적이고 자동화된 배포 CD/CI의 과정 CI는 개발 과정에 관여하는 것이고, CD는 배포 과정에 관여하는 것이다. 그 모습을 간단하게 설명하면 다음과 같다. CI의 모습은 이렇다. 개발자가 코드의 변경사항을 PUSH하면, 바뀐 버전의 코드를 빌드해보고 문제가 있는지 테스트가 수행된다. 발견된 문제를 개발자가 고치고 나면, 다시 빌드와 테스트를 한다. CD는 말 그대로 배포를 자동화하는 것이다. 개발자가 코드를 PUSH하면, CD/CI 툴 프로그램이 지정된 저장소에 코드 파일을, 지정된 배포 주체에게는 배포 요청을 보낸다. 이때 배포 주체가 저장소에 접근할 수 있도..

기타 공부 2023.06.04 0

개요

이 카테고리는 김영한의 저서 '자바 ORM 표준 JPA 프로그래밍'을 읽고 노트정리를 남기는 카테고리이다. 한 장마다 하나의 게시글을 작성한다. https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=62681446 자바 ORM 표준 JPA 프로그래밍 에이콘 오픈 소스 프로그래밍 시리즈. 이 책은 JPA 기초 이론과 핵심 원리, 그리고 실무에 필요한 성능 최적화 방법까지 JPA에 대한 모든 것을 다룬다. www.aladin.co.kr

MySQL&스프링 부트 - DB에 생성날짜가 null로 들어갈 때

https://github.com/Efub3-InternToyTeam2/Backend GitHub - Efub3-InternToyTeam2/Backend: 2023년 1학기 EFUB 프론트-백 인턴 합동 토이프로젝트(트위터 클론코 2023년 1학기 EFUB 프론트-백 인턴 합동 토이프로젝트(트위터 클론코딩)의 백엔드 리포지토리 - GitHub - Efub3-InternToyTeam2/Backend: 2023년 1학기 EFUB 프론트-백 인턴 합동 토이프로젝트(트위터 클론코딩)의 github.com 위의 리포지토리에 있는 EFUB 인턴 합동 토이프로젝트를 개발하다가, 저번에 했던 실수를 또 다시 저질러서 다시는 잊지 않고자 메모한다. 나는 BaseTimeEntity를 사용해 생성 및 수정 날짜를 관리하는 ..

기타 2023.05.27 0

#11279 : 최대 힙

풀이방법 사용된 것: 우선순위 큐 2023.05.17 자바의 PriorityQueue 클래스를 사용하면 되는 간단한 문제이다. 코드 Java(2023.05.17) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Collections; import java.util.PriorityQueue; public class Main { public static void main(String[] args) throws IOException{ // TODO Auto-generated method stub // 입력값을 읽어오기 위한 BufferedReader Buffere..

백준 2023.05.17 0

[스프링부트] 파이어베이스 연동 & 데이터 저장 & 파일 업로드까지

서론 파이어베이스(Firebase)는 구글이 소유한 모바일 어플리케이션 개발 플랫폼이다. 어플리케이션 개발을 위한 다양한 기능을 제공한다. 토이프로젝트나 과제 등에 파이어베이스의 Firestore Database와 Storage를 사용하면, 돈 한 푼 내지 않고 원격 저장공간을 사용할 수 있다. 사용 용량, 요청 횟수 등의 지표가 일정 기준을 넘지만 않으면 무료로 이용할 수 있다. 예상치 못한 원인으로 인해 갑자기 지출이 발생하는 일이 AWS에 비해 적어서 좋다고 생각한다. 팀원과 데이터를 실시간으로 공유하며 작업해야 할 때 굉장히 편리하다. 그러나 Java 및 스프링부트로 파이어베이스를 사용하는 방법에 대한 자료는 찾기가 굉장히 어렵다. JavaScript 자료만 많고, Java 자료는 잘 보이지 않는..

#14244 : 트리 만들기

풀이방법 2023.05.15 이해하기가 조금 어렵지만, 이해하고 나면 구현하기 매우 쉬운 문제이다. 트리를 구현할 필요는 없다. 트리의 개념을 잘 이해하기만 하면 간단한 반복문 및 조건문으로 해결할 수 있다. 푸는 방법은 여러 가지가 있는데, 내가 사용한 방법만 설명하겠다. 리프가 2개여야 하는 경우와 리프가 3개 이상이어야 하는 경우로 나누어서 풀었다. 먼저, 리프가 2개인 경우, 모든 노드가 일직선으로 연결되어야 한다. 사이클을 만들 수 없으므로 리프가 2개일 수 있는 경우는 딱 이 경우 하나밖에 없다. 리프가 3개인 경우 트리를 만드는 방법은 매우 다양해지는데, 여러 방법 중 내가 선택한 것은 다음과 같다. 0번 노드를 중심으로 두고, 필요한 리프 개수만큼의 노드를 0번 노드에 따로따로 연결해준다...

백준 2023.05.15 0