sosow0212의 등록된 링크

 sosow0212로 등록된 티스토리 포스트 수는 49건입니다.

[Java] 만취한 사람도 쉽게 이해할 수 있는 '일급 컬렉션'에 대해 알아보자! [내부링크]

글에 오류가 있으면 댓글로 피드백 부탁드립니다 :) '일급 컬렉션' 뉘슈? 일급 컬렉션이란 먼저 다음과 같습니다. Collection을 포함한 클래스는 반드시 다른 멤버 변수가 없어야 한다. 부가설명 : Collection(List, Set ..)을 Wrapping한 변수가 있다면 그 외에 다른 멤버 변수는 없어야한다! --> 오마이갓.. 이게 무슨 말일까요? 먼저 예시를 통해 일급 컬렉션을 이용한 프로그램을 보면서 이것의 장점과 사용 이유에 대해 더 알아보겠습니다. 예시(일급 컬렉션 적용 ver.) 예시에 앞서 먼저 프로그램 요구사항은 다음과 같습니다. 엔델 : 제이, 자동차 경주 게임 프로그램을 만들어주세요! 1. 자동차 경주를 할 사람은 'odo', 'kokodak', 'jay' 로 고정해주세요. ..

[Java] final 키워드에 대해 알아보자 [내부링크]

우테코에서 자동차 미션을 진행하면서, final 키워드를 제멋대로 사용해서 피드백을 많이 받았습니다. final 이란 지금까지 '바뀌지 않는'으로만 알고 있었는데, 오늘은 final 키워드에 대해 구체적으로 배워보고 언제 사용할지 알아보도록 하겠습니다! final : 의미와 역할을 알아봅시다! 재할당 불가를 명시합니다. ==> 위에 사진과 같이 final로 선언을 한 age를 재할당 한다면 오류가 발생합니다. final 인자는 메서드 내에서 변경이 불가능합니다! ==> 위와 같이 increaseNumber() 메서드의 인자를 final로 받아준다면, final로 넘어오는 number 변수는 읽기만 가능해집니다. final 키워드를 메서드 앞에 사용한다면, 오버라이드가 안됩니다. final 키워드를 클래스..

[우테코 5기] 1차 미션 자동차 경주 정리 및 회고록 [내부링크]

약 일주일 동안 진행했던 미션이 끝이 났습니다. 페어 프로그래밍을 처음 해봤는데, 너무 재밌었고 배운점이 많았습니다. 같은 페어인 우르한테 인텔리제이 여러 단축키를 많이 배웠고, 같이 개발을 하면서 테스트와 여러가지 꿀팁들을 많이 얻었습니다. 강의를 들으면서 느낀 점과 궁금한 점 Q) System.out.println()을 냅두고 테스트 코드를 작성하는 이유는? 기능이 커지면 sout으로는 오래 걸린다. 또한 서버도 껐다 켜야한다 등등 반면, 테스트 코드를 작성하면 이러한 단점을 모두 커버할 수 있다. (단지, 테스트 작성 시에만 시간이 듬) 테스트 코드를 사용하면 프로덕션 코드의 정확성을 판단할 수 있다. 리팩토링 시에도! 프로덕션 코드가 잘못 됐을 때를 대비해서 테스트의 수를 늘릴 수도 있다. 프로덕..

[Java] AssertJ 문법과 간단한 예시 (예외처리 검증 추가) [내부링크]

안녕하세요. 오늘은 자바에서 테스트를 할 때 많이 사용되는 AssertJ와 이를 통해 단위테스트를 진행해보고자 합니다. AssertJ AssertJ는 assertion을 제공하는 자바 라이브러리로 에러 메시지와 테스트 코드의 가독성을 높여주는 라이브러리입니다. 쉽게 말해서 테스트의 흐름을 작성할 수 있는 라이브러리라고 보시면됩니다! 체이닝 문법을 통해서 직관적으로 읽힙니다. 예제를 보면서 설명을 진행하겠습니다. @Test void stringDoubleSplitTest() { //given String input = "1,2"; //when final String[] splitedInput = input.split(","); //then assertThat(splitedInput).contains..

[자바] 백준 1012 : 유기농 배추 / 그래프 + DFS 풀이 [내부링크]

https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 실버2 난이도의 정답률 38% 문제입니다. 그래프 + DFS(혹은 BFS) 알고리즘으로 해결할 수 있습니다. 문제 분석 및 풀이 문제는 간단합니다. 배추밭의 가로와 세로 길이가 주어집니다. 그리고, 배추가 심어진 위치가 주어집니다. 배추가 심어진 위치는 1의 값을 가지며, 연결된 부분에 해충을 하나 풀면 연결된 부분은 해충 해결이 됩니다. 문제에서는 이렇게 연결된 부분의 개수를 찾으면 그것이 필요한 배..

[자바] 백준 1937 : 욕심쟁이 판다 / DFS + DP 풀이 / 유사 문제 [내부링크]

https://www.acmicpc.net/problem/1937 1937번: 욕심쟁이 판다 n × n의 크기의 대나무 숲이 있다. 욕심쟁이 판다는 어떤 지역에서 대나무를 먹기 시작한다. 그리고 그 곳의 대나무를 다 먹어 치우면 상, 하, 좌, 우 중 한 곳으로 이동을 한다. 그리고 또 그곳에 www.acmicpc.net 골드3 난이도, 약 30%의 정답률을 가진 완전탐색 + DP 문제입니다. 문제 분석 및 풀이 이 문제를 이해하면 먼저 팬더가 대나무를 4방향으로 먹으러 돌아다닙니다. 팬더는 돌아다닐 때 이전 지역보다 무조건 대나무가 많은 지역으로 가야합니다. 이런 조건을 바탕으로 팬더가 먹을 수 있는 (== 팬더가 이동할 수 있는) 지역의 최댓값을 구하는 것이 문제입니다. 즉 다른 완전탐색 문제..

[자바] 2023 카카오 블라인드 채용 : 택배 배달과 수거하기 풀이 (그리디) [내부링크]

https://school.programmers.co.kr/learn/courses/30/lessons/150369?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Level2, 782 solve 정답률 22% 그리디 문제입니다. 개인적으로 시간이 많이 들었고 그리디한 방법을 찾기 어려운 문제였다고 생각합니다.c 문제 풀이 및 접근 문제 이해 자체는 간단합니다. 택배 배달과 수거를 동시에 진행을 하는데, 택배 차량은 한 번에 cap개의 상자를 실을 수 있습니다. 따라서 n개의 집을 돌아다니면서 배송 및 수거를 하면서 cap개를 ..

[자바] 백준 2589 : 보물섬 / BFS 풀이 [내부링크]

https://www.acmicpc.net/problem/2589 2589번: 보물섬 보물섬 지도를 발견한 후크 선장은 보물을 찾아나섰다. 보물섬 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 각 칸은 육지(L)나 바다(W)로 표시되어 있다. 이 지도에서 www.acmicpc.net 골드5 난이도, 정답률 37% 문제입니다. 개인적으로 잘 만든 BFS문제라고 생각이 듭니다. 문제 이해 및 분석 이 문제는 요구 사항을 이해하기 조금 어려웠습니다. 문제에서 보물이 묻힌 두 곳의 최단 거리를 구하라고 했는데, 일단 여기서 보물이 묻힌 두 곳은 어떻게 구해야하는지가 중요합니다. 보물이 묻힌 두 곳은 육지에서 서로 가장 먼 곳에 각각 묻혀있습니다. 만약 육지인 (a,b) 좌표와 (..

[자바] 백준 N과 M 시리즈(1~4) / 백트래킹 [내부링크]

백트래킹 연습하기에 최고로 좋은 문제인 백준 문제 N과 M시리즈입니다. 백준 15649 : N과 M(1) 자바 풀이 https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net package com.sosow0212.study; import java.util.Scanner; // https://www.acmicpc.net/problem/15649 (N과M (1)) public class q15649_1 { private static int n, m; pr..

[개발 일기 #26] 1월의 개발 공부와 우테코 영어 이름, 창업 지원 [내부링크]

23년도 1월이 되고나서는 우아한테크코스에 들어가기 위한 준비를 많이 했습니다. 자바 클린코드, 디자인 패턴 공부, 프로젝트, CS공부, 코테 준비 이렇게 5가지를 준비했습니다. 먼저 클린코드와 디자인 패턴 같은 경우는 이펙티브 자바와 구글을 통해서 따로 공부를 하는 중이고 CS 같은 경우는 전공으로 많이 열리지가 않아서 따로 네트워크, 운영체제, 컴퓨터 구조, 아키텍쳐를 책으로 공부하는 중입니다. 프로젝트는 작년부터 만들고있는 커뮤니티를 리팩토링과 기능 추가하는 과정에 있습니다. 아마 돌아오는 2월 안에는 많은 기능을 다듬고 배포하지 않을까 생각하고 있습니다. 코딩테스트 같은 경우 프로그래머스를 풀려고 했으나, 조금 더 문제를 많이 풀어보고 진행하는게 나을 것 같아서 현재는 백준 사이트에..

[자바] 백준 17609 : 회문 (문자열) [내부링크]

https://www.acmicpc.net/problem/17609 17609번: 회문 각 문자열이 회문인지, 유사 회문인지, 둘 모두 해당되지 않는지를 판단하여 회문이면 0, 유사 회문이면 1, 둘 모두 아니면 2를 순서대로 한 줄에 하나씩 출력한다. www.acmicpc.net 골드5 난이도의 정답률 29% 문제입니다. 문제 자체는 쉬운 문자열 처리(팰린드롬) 문제이나 알고리즘을 잘 짜지 않으면 시간초과가 떠서 정답률이 낮은 문제입니다. 문제 분석 이 문제는 주어지는 문자열에 대해 [팰린드롬, 유사 팰린드롬, 둘다 해당 안됨] 이 세 가지의 경우 중 맞는 것을 출력해주면 됩니다. 유사 팰린드롬은 문자열 S에서 한 문자를 뺐을 때 팰린드롬이 되면 유사 팰린드롬이라고 볼 수 있습니다. 예를 들자면 "..

[커뮤니티 #18] Redis를 이용해서 포인트 랭킹 구현하기 (Sorted Set = ZSet) [내부링크]

아직 배우는 단계라서 정확하지 않을 수 있습니다! 피드백 해주시면 참고하겠습니다 :) 추후에 구글링 및 더 많은 공부를 더 진행한 후 깨끗히 리팩토링 진행하도록 하겠습니다. https://github.com/sosow0212 sosow0212 - Overview sosow0212 has 70 repositories available. Follow their code on GitHub. github.com 오늘은 Redis를 이용해서 포인트 랭킹을 구현했습니다. Redis를 단순 저장의 목적으로 사용한 것 같아서 마음에 쏙 들지는 않지만 일단 공부한다고 생각하고 진행해보았습니다. 먼저 랭킹 기획 방향은 이렇게 생각했습니다. 1. 처음에 회원가입을 한다면, Point 도메인을 만들고 MySQL 데..

[자바] 백준 2573 : 빙산 / dfs, bfs 풀이 (비슷한 문제) [내부링크]

https://www.acmicpc.net/problem/2573 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net 골드4 난이도, 정답률 26% 문제입니다. 문제 자체는 쉬우나, 문제를 해결하기 위해서 해야 하는게 많아서 정답률이 낮아보입니다. 이 문제는 두 가지의 문제를 복합시킨 느낌입니다. 풀이 후 밑에 어떤 문제인지 적어두겠습니다! 문제 분석 이 문제 자체는 어떻게 풀지 이해하기 쉬운 문제입니다. 주어진 설명 그대로 0으로 채워진 칸은 바닷물이므로, 1초가 지나면 이 바닷물과 닿은 빙산은 1칸씩..

[자바] 백준 13023 : ABCDE / 그래프, DFS 풀이 [내부링크]

https://www.acmicpc.net/problem/13023 13023번: ABCDE 문제의 조건에 맞는 A, B, C, D, E가 존재하면 1을 없으면 0을 출력한다. www.acmicpc.net 골드5 난이도의 정답률 약 29% 난이도의 문제입니다. 그래프를 구현한 후 dfs로 탐색하는 결합 유형입니다. 문제 분석 친구 관계를 구하는 문제입니다. 문제에서 주어진 예시를 통해 문제를 간단하게 풀이하자면 다음과 같습니다. 문제 예시는 A-B-C-D-E 관계를 찾으라는 말은 0 ~ N-1개의 주어진 것에서 노드가 쭉 연결되었는지를 찾는 문제입니다. 하지만, 위와 같은 경우 1번이 가운데에 있고 2,3,4번이 1번과 친구 관계입니다. 이 경우에 2번과 3번, 4번은 각각 남남이라고 보면 됩니다. ..

[우아한테크코스 5기] 사전 준비 메일과 서울 살이 시작! [내부링크]

오늘은 우아한테크코스 사전 준비 메일이 도착했습니다. 위와 같이 교육 시작일에 대한 안내와 준비 사항에 대해 메일이 왔습니다. 이제 합격했다는게 정말 실감이 납니다c️ 일단 영어 이름을 얼른 생각해봐야하는데 정말 고민입니다. 앞으로도 쭉 쓸 것 같아서 약 2주동안 친구들과 함께 신중히 생각해봐야겠습니다! 해당 되는 사람들은 국민내일배움 카드를 통해서 K-digital 신청을 해야해서 오늘 신청을 했습니다. 마지막으로 학교에 전화해서 휴학 신청도 했습니다! 이렇게 우테코 관련 돼서는 아직 다 끝내지는 못했지만 얼추 정리가 됐습니다. 우테코 활동을 하면 일과가 끝나고도 늦게까지 공부할 생각이고, 통학에 시간을 뺏기기 싫어서 자취를 해야겠다고 결심했습니다. 그래서 가급적 선릉역 근처로 ..

스프링 서버를 Docker, Docker-compose로 멋들어지게 띄워보기 [내부링크]

안녕하세요. Docker와 Docker compose는 개발을 하다 언젠가 쓰게 됩니다,. 한 번 쓰면 너무 편해서 이전으로 돌아가기 힘든 것 같습니다. 저는 처음에 Docker에 대한 개념도 잘 몰랐고, 왜 쓰는지에 대해도 몰랐습니다. 따라서 이번 글을 보시고 프로젝트에 적용하시기 전에 도커에 대한 개념은 유튜브나 다른 블로그 포스팅을 보고 참고하고 보시는 것을 추천드립니다. 처음에 저 같은 경우는 도커 세팅에 관한 글은 많지만, 실제로 너무 두루뭉실한 얘기들이 많아서 따라하기가 너무 힘들었습니다. 그래서 노드 개발하는 친구에게 많이 물어보고 귀찮게 했습니다. 오늘 글을 통해서 우리가 배워볼 건 다음과 같습니다. Docker, Docker-compose, .env 민감 정보 감추기..

[자바] 프로그래머스 - 개인정보 수집 유효기간 (2023 카카오 블라인드) 풀이 [내부링크]

https://school.programmers.co.kr/learn/courses/30/lessons/150370 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2023년도 카카오 블라인드 채용 코딩테스트 문제입니다. 프로그래머스 기준 현재 570명 풀이 완료 및 27%의 정답률을 기록하고 있습니다. 아마도 나온지 얼마 안 돼서 정답률은 낮아보이지만, 실제로는 어렵지 않은 문제입니다. 문제 풀이 및 접근 방법 고객의 개인정보 수집 일자와 약관의 종류에 따라 고객의 개인정보 수집 일자를 구하고, 그걸 오늘 날짜와 비교해서 파기해야하는 정보인지 아닌지 ..

[커뮤니티 #17] 기본 키 타입, 네이밍 리팩토링 작업 [내부링크]

안녕하세요. 신년의 첫 포스팅이네요! 다들 새해 복 많이 받으세요. 오늘도 커뮤니티 프로젝트 리팩토링에 대한 내용을 다룹니다. 레거시 프로젝트를 리팩토링 하는 것이 이렇게 힘든 일인줄 몰랐습니다 ㅠㅠ 이번 경험을 바탕으로 앞으로는 "처음부터 꼼꼼한 설계와 클린코드를 이용해서 프로젝트를 제작해야겠다."라고 생각했습니다. 오늘은 세 가지 작업을 했습니다. 도메인 기본 키 타입 리팩토링 작업 User 도메인 리네이밍 README.md 가독성 좋게 수정하기 1. 도메인 기본 키 타입 리팩토링 작업 현재 레거시 프로젝트의 도메인 기본 키 타입은 전부 int형으로 만들었습니다. 사실 int형으로 모두 기본 키 처리를 해도 상관은 없겠지만, 만약 프로젝트의 규모가 커지고 트래픽과 데이터가 많아진다면 데이터베이스에 수..

[개발 일기 #25] 12월의 개발 공부와 연말 [내부링크]

22년 12월 31일 기준으로 하루도 빠짐없이 공부를 해왔습니다 내년에도 1일 1 커밋 활동으로 실력도 키우고 꾸준히 진행해 보겠습니다. 이번 달에는 먼저 종강을 맞이했습니다. 12월 초에는 우테코 최종 코테 공부를 하고 합격을 기다리느라 공부를 어영부영했습니다. 시험공부도 하느라 아무래도 알고리즘도 많이 풀지 못했고, 유의미한 공부를 많이 하지는 못한 것 같습니다. 그래도 우아한테크코스에 합격한 것에 너무 만족했습니다. 합격하고 나서는 기존 레거시 프로젝트를 갈아엎었습니다. 기존 프로젝트는 더티코드와 오로지 기능 구현만 했는데, 지금 봤을 때 효율적으로 좋지도 않은 코드였고 하나를 바꾸면 뭉터기로 다 고쳐줘야 하는 문제점이 있었습니다. 그래서 배운 것들을 바탕으로 도메인 메서드로 최대한 분리하..

[우아한테크코스 5기] 최종 합격 후기와 자소서 그리고 모든 과정에 대해서 [내부링크]

정말 길고 힘들었던 우아한테크코스 선발 과정이 끝이 났습니다. 아직도 백엔드 부분 합격이라는게 어안이 벙벙하고 믿기지가 않네요. 작년에 누군가의 글을 보면서 꼭 가고 싶다라고 생각했는데, 그 당시 많이 해둔 것도 없고 본격적으로 어떤 분야로 취업을 할지 고민을 할 때였습니다. 다행히도 좋은 친구들과, 좋은 인연들로 인해서 제대로 된 개발과 함께 많은 활동을 하면서 실력과 스스로를 어필할 수 있는 쓸 것들이 생겼습니다. 누군가 이 글을 보고 작년의 저와 같은 생각을 할 수 있을 거라고 생각합니다. 저는 공부를 하면서 배워도 배워도 끝이 없어서 끝이 없는 터널을 가는 것 같고 항상 힘들었습니다. 대부분은 취준 과정에서 우테코 지원을 하실텐데, 후기 글을 통해서 하시는 것에 있어서 조금이나마 도..

2023년 계획과 2022년도 회고록 [내부링크]

이제 반오십까지 며칠 남지 않았습니다. 항상 연간 회고록을 보면 시간이 빨리간다고 적었더라고요. 늘 느끼지만 한살 한살 들 수록 한 해가 더욱 빨리 지나가는 것 같습니다. 작년에 세운 2022년도 계획과 성취여부 1. 자바 스프링 백엔드 프로젝트 진행, 인공지능 공부 및 활동 전국 대학생 앱 개발 챌린지 K-해커톤 수상 (스프링 프로젝트) 교내 SW 개발 대회 수상 (스프링 프로젝트) Community API Server 제작 및 리팩토링 진행 (스프링 프로젝트) Kotlin Simple Project 제작 (코틀린 맛보기 공부) 캡스톤디자인 다중 서버 프로젝트 진행 (스프링 프로젝트) 파이썬, 스프링 멘토 활동 진행 우아한테크코스 5기 지원 2. 알고리즘, 면접 공부하기 올해 초에 백..

[자바] 백준 1328 : 고층 빌딩 (DP 풀이) 접근 방법 및 풀이 [내부링크]

https://www.acmicpc.net/problem/1328 1328번: 고층 빌딩 상근이가 살고있는 동네에는 빌딩 N개가 한 줄로 세워져 있다. 모든 빌딩의 높이는 1보다 크거나 같고, N보다 작거나 같으며, 같은 높이를 가지는 빌딩은 없다. 상근이는 학교 가는 길에 가장 왼 www.acmicpc.net 플래티넘5 난이도, 정답률 34% 문제입니다. 문제 풀이 문제를 풀기 위해서는 이 문제의 의도를 먼저 이해해야합니다. N개의 빌딩이 있고, 왼쪽에서 봤을 때 보이는 빌딩의 수는 L개, 오른쪽에서 봤을 때 보이는 빌딩의 수는 R개입니다. N, L, R의 값이 주어졌을 때 가능한 빌딩 순서의 경우의 수를 찾으면 됩니다. 말이 조금 어려울 수 있지만 문제에서 주어진 예시로 한 번 봐보겠습니다..

[커뮤니티 #16] 도메인 단위 테스트를 만들어보자 [내부링크]

기존 커뮤니티 프로젝트에는 Service, Controller 레이어의 테스트밖에 없었습니다. 레거시 프로젝트를 리팩토링 작업을 하면서 기존 Service 레이어에서 사용한 Setter, Getter 조합을 도메인 메서드로 바꾸면서 테스트 할 것들이 생겼습니다. Getter와 Setter의 사용이 최대한 제한되어 있는 상태에서 도메인 테스트 코드 작성을 진행해보겠습니다. 양이 너무 많다보니 예시로 하나만 업로드 하겠습니다. 오늘 예시로 사용될 도메인은 Message 도메인입니다. 먼저 도메인 코드를 확인해보겠습니다. @Data @NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity public class Message extends Entity..

[커뮤니티 #15] 클린코드 리팩토링 (Admin API) / 도메인 메서드를 사용하는 이유 [내부링크]

이제 어느정도 1차 클린코드 리팩토링 작업이 끝이나고 있습니다. 오늘은 Admin API 리팩토링을 진행하였습니다. 이 API에는 유저 관리와, 게시글 관리, 정지 관리를 담당합니다. 기존 리팩토링 전 Service 코드를 확인해보겠습니다. @RequiredArgsConstructor @Service public class AdminService { private final UserRepository userRepository; private final BoardRepository boardRepository; private final UserReportRepository userReportRepository; private final BoardReportRepository boardReportR..

[커뮤니티 #14] 기존 커뮤니티 프로젝트 클린코드 리팩토링 (Comment, Report) [내부링크]

최근에 바빠서 레거시 프로젝트 리팩토링을 진행하지 못했습니다. 지난 번에 이어서 오늘도 클린코드로 리팩토링 해보겠습니다~ Comment API 리팩토링 오랜만에 댓글 API를 보니 바꿀게 한 두가지가 아니었습니다. 변수, 메서드명부터 시작해서 잘못된 stream 사용, 그리고 도메인 메서드로 분리할 수 있는 것들도 보였습니다. 오늘은 이것들을 바꿔볼 예정입니다. 기존 CommentService 먼저 보겠습니다. @RequiredArgsConstructor @Service @Slf4j public class CommentService { private final CommentRepository commentRepository; private final BoardRepository boardRep..

[자바] 프로그래머스 : 여행경로 (DFS 백트래킹) / 접근 방법 및 풀이 [내부링크]

https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Level 3, 정답률 43% 문제입니다. 실제 코딩테스트에 문제가 나온다면 이런 느낌이지 않을까 싶은 문제입니다. 어느정도 완전탐색에 익숙해지신 분들에게 추천 드리는 문제입니다. 모든 코테 문제를 풀 때, 해결 방법을 찾는 방법과 계획법이 중요하다고 생각합니다. 코테에 익숙치 않은 경우 무작정 코드부터 짜는데 이러면 시간은 시간대로 걸리고 테스트 케이스에서 예외가 발생하면 리팩토링이 정말 오..

[우아한테크코스 5기] 최종 코딩테스트 후기 [내부링크]

오늘 우아한테크코스 최종 코딩테스트를 봤습니다. 이번 5기의 전체 지원자는 총 3000명정도 됐고, 저는 백엔드 코스에 지원했습니다. 백엔드 지원자를 100명을 뽑는데, 대략 200명 정도 최종에 갔으니 마지막 코테는 1:2의 경쟁률이라고 예상됩니다! 우아한형제들 루터회관? 쪽 건물에서 코테를 진행했습니다. 12시에 도착해서 맨 앞자리에 앉고, 친구들과 카톡 하면서 긴장을 풀었습니다. 그렇게 기다리다가 13시에 본격적으로 시험이 시작 됐습니다. 전 기수 최종 코딩테스트 문제를 풀었을 땐 뭔가 되게 복잡스럽고 정신없게 풀어서 살짝 걱정됐습니다. [점심 메뉴 추천 미션] 문제를 보자마자 분석에 들어갔습니다. 문제 자체는 프리코스 3주 차 문제(다리 건너기 미션)보다 비슷하거나 살짝 어려웠던..

[우아한테크코스 5기] 프리코스 합격, 최종 코테 [내부링크]

우아한테크코스 5기 선발과정에서 프리코스 과정에서 합격했습니다. 아직도 어안이 벙벙하네요.. 최종 코테가 이번 주 토요일인데, 정말 꼭 붙었으면 좋겠습니다! 학교 시험 기간인데 시험공부고 뭐고 최종 코테만 준비해야할 것 같습니다. 떨어지더라도 많은 것을 배우고 최종까지 갔다는 것에 만족하고 열심히 준비해보겠습니다

[원티드 프리온보딩] 백엔드 인프라 설계 with AWS week 1-1 (전반적인 AWS 인프라 소개) [내부링크]

Week 1-1. 교육 내용 전반적인 AWS에서 제공하는 서비스에 대한 간단한 소개를 교육 받았습니다. 기업에서도 AWS를 정말 많이 사용하는데, 어떤 포인트에서 어떤 서비스를 사용하는지 설명을 들었습니다. Week 1-1. 느낀점 현업에 나가기 위해서 정말 알아야할 것들이 많다는 것을 알았습니다. 실무적인 부분은 아무래도 신입 입장에서 부족하겠지만, 지식을 습득하고 실무를 진행한다면 적응과 배움이 더 빠르기 때문에 더욱 열심히 해야겠다고 생각했습니다. AWS 서비스는 지금까지 단순 EC2, S3, ELB는 간단하기 알았습니다. 이번 교육을 들으면서 CloudFront와 S3를 결합해서 사용하는 것을 듣고 "반드시 정해진 용도로만 사용하는 것보다 유동적으로 바꿀 수 있으면 바꾸는게 좋겠구나" 라고 느꼈습..

[자바] 프로그래머스 - 명예의 전당 (1) / 구현 문제 Stream 풀이 [내부링크]

https://school.programmers.co.kr/learn/courses/30/lessons/138477 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Level 1, 정답률 38%의 신규 문제입니다. 문제 자체는 쉬우나, 완료자가 많이 없어서 아직은 정답률이 낮아보입니다. 문제 분석 문제에서 주어진 예시입니다. 저희가 구해야 하는 것들은 모든 일차 별 발표 점수를 구해야합니다. 먼저 명예의 전당에 오를 수 있는 값들의 개수는 k개입니다. 여기에 오를 수 있는 점수는 모든 점수 중 상위 k개입니다. 발표 점수 계산은 명예의 전당에 올라가있는 k..

[커뮤니티 #13] 기존 프로젝트 리팩토링 계획 및 진행하기 [내부링크]

https://blog.naver.com/sosow0212/222854060468 스프링부트 커뮤니티 API 서버 만들기 #12 JUnit5로 Service 단위 테스트 만들어보기 스프링부트 커뮤니티 API 서버 만들기 #12 JUnit5로 Service 단위 테스트 만들어보기 https://github... blog.naver.com #13번 이전 글은 기존 네이버 블로그에 업로드되어 있습니다 :) 오랜만에 열어보는 커뮤니티 프로젝트 올해 7월에 당근마켓 떨어지고 "API 서버 개발을 집중적으로 해야겠다"라고 생각했습니다. 그때 만든 커뮤니티 프로젝트입니다. 단순 게시판 API 서버가 아닌 Redis나 Querydsl 같은 기술적인 것을 적용도 해보고, 직접 해결도 해보고 싶은 마음에 만들었습니다. 한..

[개발 일기 #1] 11월의 개발 회고록 (새로운 기술 블로그, 우테코, 원티드 지원) [내부링크]

새로운 기술 블로그 먼저 이번 달의 새로운 이슈는 기술 블로그를 이전했습니다. 네이버 블로그를 정말 오랜 시간 동안 해왔고 익숙하지만, 앞으로를 생각한다면 구글 검색도 되고 개발자 풀이 더 넓은 티스토리가 좋다고 생각했습니다. 그래서 티스토리에 새로운 블로그를 만들었습니다. 지금은 같은 글을 티스토리, 네이버 블로그에 둘 다 올리지만 아마 올해가 지난다면 티스토리로 완전히 전향할 것 같습니다. 지금 네이버 블로그는 모든 개발 공부의 일대기가 담겨있어서 목록을 보면 프론트엔드, 백엔드, 각종 언어들로 가득 차서 한눈에 제가 무엇을 했고 요즘은 무엇을 공부하는지 찾기가 힘듭니다. 서버 개발자의 꿈이 확실시돼서, 티스토리에는 이에 관해서 더 자세하고 꼼꼼한 글을 작성할 예정입니다. 우아한테크코스 배달의민족 운..

[우아한테크코스 5기] 프리코스 4주차 마지막 '다리 건너기' 미션 회고록 [내부링크]

드디어 우아한테크코스의 프리코스 과정이 끝이 났습니다. 약 한 달 동안 정말 많은 것을 배운 좋은 기회였습니다. 특히나 Stream 사용에 대해 많이 익숙해졌고, 테스트 코드의 중요성을 몸소 느꼈고, 클린코드와 리팩토링을 신경 쓰는 개발자로 성장한 것 같습니다. 이번 미션의 조건인 메서드 길이는 10라인 이하를 지키기 위해서 변수 사용을 어떤 식으로 하고 메서드는 어떻게 나눠야 할지 생각을 많이 할 수 있었습니다. 또한 이번에 피드백으로 들어온 '객체는 객체스럽게'에 대해서도 고민을 많이 했습니다. 따라서 외부에서 getter를 써서 기능을 구현하지 않고, 도메인 내부에서 최대한 처리하게 만들려고 노력했습니다. 지난주 미션에서 개인적으로 굉장히 아쉬웠던 점이 있었습니다. 기능 하나당 테스트코드를 작성하고..

[자바] 프로그래머스 - 실패율 (2019 카카오 블라인드) / HashMap 풀이 [내부링크]

https://school.programmers.co.kr/learn/courses/30/lessons/42889 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Level1, 58% 정답률 문제입니다. 문제 간단 설명 이 문제를 간단하게 설명하자면 다음과 같습니다. 예시를 이용해서 설명하겠습니다. N(스테이지 수) = 5, stages[](사용자가 멈춰있는 스테이지의 번호) = {2, 1, 2, 6, 2, 4, 3, 3} 이 경우에 stages[]에서 1의 개수를 찾아보면 1개, 2의 개수는 3개 ... 5의 개수는 0개, 6의 개수는 1개입니다. 이 말..

도커를 이용해서 Redis 사용 및 스프링 프로젝트에 적용하기 [내부링크]

오늘은 스프링 프로젝트에 Redis를 설정하고 어떻게 적용했는지에 대해 포스팅하겠습니다. Redis 사용 준비 먼저 Redis 설치는 로컬에 하는 방법과, 도커를 이용하는 방법이 있습니다. 저는 Docker를 이용해서 설치해보도록 하겠습니다. 처음 시작하시는 분들이 있을 수 있기에 기본적인 Dockerfile도 같이 업로드하겠습니다. 혹시 도커가 설치 안 되신 분들은 설치하시고 진행하시면 됩니다. Docker 세팅하기 Dockerfile FROM openjdk:11 ARG JAR_FILE=*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-jar","/app.jar"] 저는 Java11 버전으로 프로젝트를 만들었습니다. docker-compose.yml versi..

[우아한테크코스 5기] 프리코스 3주차 '로또 미션' 회고록 [내부링크]

벌써 우아한테크코스 프리코스 진행 3주 차가 끝났습니다. 지난번에 느꼈던 점과 공통 피드백을 바탕으로 이번 주 미션은 조금 다르게 구상했습니다. 먼저 기존에는 혹시나 망칠까 봐 커밋을 미루다가 마지막에 하는 경우가 있었습니다. 하지만 실제 시험에서 시간이 부족하고 집에서 하던 방식대로 못할 수가 있기 때문에 이번에는 최대한 기능 구현 목록을 상세하게 작성하고 순서대로 만들면서 커밋을 진행했습니다. 우려됐던 부분이 기능 목록 문서를 그대로 따라야 하는가에 대한 고민이었는데, 다행히도 중간중간 바뀔 수 있으니 살아있는 문서로 만들라는 말씀을 보고 문서를 변경하면서 진행할 수 있었습니다. 저번 주에 생각보다 MVC 패턴으로 구조화해서 하는 것이 까다로웠기 때문에, 이번 주에는 어떤 식으로 해야 효율적인지 기능..

[자바] 프로그래머스 - 피로도 / 공포의 백트래킹 알고리즘 정복하기 [내부링크]

https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 프로그래머스 정답률 55%, Level2 난이도의 백트래킹 문제입니다. 문제 간단 분석 이 문제를 간단하게 분석해보자면 다음과 같습니다. 먼저 던전을 탐험하려면 나의 피로도가 '최소 필요 피로도' 만큼 있어야하고, 거기서 던전을 탐험하면 '소모 피로도'를 감소시킵니다. 매개변수로 들어오는 dungeons는 2차원 배열이고 요소 하나는 다음과 같습니다. {최소 필요 피도로, 소모 피로도} 이제 더 ..

[자바] 프로그래머스 - 주차 요금 계산 (2022 카카오 블라인드) / HashMap 풀이 [내부링크]

https://school.programmers.co.kr/learn/courses/30/lessons/92341 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Level2, 정답률 57% 난이도의 2022년도 카카오 블라인드 채용 문제입니다. 문제 간단 설명 문제를 간단하게 요약하자면 다음과 같습니다. 매개변수로 들어오는 String[] records와 int[] fees를 이용해서 주차요금을 구하는 문제인데, records 배열의 각각의 요소는 다음과 같습니다. "03:00 1234 IN" 이처럼 "시간 차량번호 입/출차" 형식입니다. 우리는 이 re..

클린코드에 대해서 알아보자 (리팩토링) [내부링크]

개발을 하다 보면 어느 포인트에서 클린코드라는 것을 접하게 됩니다. 대부분은 혼자 프로그래밍을 하면서 변수명, 함수명 혹은 로직 구조 설계에 대해 개개인적으로 습관이 굳어지게 됩니다. 따라서 사람마다 코드 스타일이 달라지게 되는데, 이는 협업할 때 타인이 코드 이해를 할 때 더 오랜 시간을 소모하게 됩니다. 따라서 개발자들은 클린코드를 작성하기 위해 노력해야 합니다. 클린코드 클린코드란 네이밍, 중복 제거, 하나의 역할만 수행하게 끔 코드를 작성해서 가독성이 높은 코드를 의미합니다. 즉, 위와 같은 조건으로 프로그래밍을 하면서 코드를 누구나 이해할 수 있는 것이 바로 클린코드를 의미합니다. 다음 예시를 통해 클린코드가 어떤 의미인지 조금 더 직관적으로 확인해보겠습니다. 기존 클린코드 적용 전 코드 p..

스프링에서 properties 파일을 통해 민감 정보 감추는 방법 [내부링크]

개발을 하고 서버로 배포를 하면, 민감한 값을 숨겨야 하는 경우가 생깁니다. 데이터베이스 키 값을 숨긴다거나, jwt 키의 값을 숨기는 경우 등등 여러 가지 경우가 있는데, 이번 포스팅은 이에 대해 다룰 예정입니다. 데이터베이스 값 감추기 먼저 데이터베이스의 값을 감추는 방법에 대해 말씀드리려고 합니다. 기존의 application.yml 파일은 다음과 같습니다. server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/capstone?useSSL=false&useUnicode=true&characterEncoding=utf8&allowPublicKeyRetrieval=true username: root password: root d..

[자바] 프로그래머스 - 게임 맵 최단거리 (BFS) / 유사문제 [내부링크]

https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답률 52%의 어렵지 않은 bfs 문제입니다. 좌표 값(0,0) 에서 좌표 값(n, m)에 도달할 수 없다면 -1을 출력, 도달할 수 있다면 몇 번을 이동해야 최단으로 도착하는지 출력을 하면 됩니다. 문제 접근 방법 저 같은 경우 이 문제를 보고나서 다음과 같은 방법으로 풀이를 생각했습니다. 1. 목적지까지의 이동 거리를 최단으로 하려면 몇 번을 구해야 하는지에 대해서 - 최단까지의 이동을 하려..

[우아한테크코스 5기] 프리코스 2주차 '숫자 야구 미션 회고록 [내부링크]

이번 2주차 미션은 '숫자 야구' 미션이었습니다. 문제 해결을 위한 알고리즘은 간단하였지만, 구조화 및 클린코드 작성이 어려웠던 것 같습니다. 이번 미션을 진행하면서 배운 것, 느낀 점들을 적어볼까 합니다. 2주차 미션 진행 회고록 기존에 스프링을 꾸준히 하면서 MVC 패턴에 대해 잘 알고 있었다고 생각했습니다. 하지만, 미션을 진행하면서 스프링과 다른 방식이다 보니 어떤 식으로 구현을 할지 막막했습니다. 아마 우테코에서 기능 구현 목록을 먼저 작성하라한 의도가 이런 부분에서 "먼저 고민을 하고, 정해진 대로 구현을 해봐라!"라는 느낌인 것 같았습니다. 하여튼, 이번 미션을 통해서 MVC 패턴을 다시 공부하고, 적용을 했습니다. 또한 변수명과 메서드의 분리와 조금 더 협업하기 좋은 코드가 무엇인지 계속 ..

10회 K-해커톤 수상 후기 및 이전 과정 공유 [내부링크]

4월부터 팀원을 모집하고 약 6개월간 열심히 한 결과 최종 결선에 들었습니다. 전국 200팀 중 17팀 이내로 들어야 결선이고, 동시에 수상 확정이니 결선 오고는 마음은 조금 편했습니다. 개발을 시작하면서 전국 단위 해커톤을 나가서 수상도 받고 너무 감회가 새로웠습니다! 해커톤 전체 진행 과정이 궁금하시다면 https://blog.naver.com/sosow0212/222822588457 이 링크를 타고 쭉 봐주시면 됩니다 :) 다들 짧은 발표와 함께 시연 영상으로 발표를 마쳤는데, 확실히 심사위원 분들이 대단하신 분들이라서 질문의 깊이가 본선 때보다 훨씬 깊었습니다. 각 팀별 발표를 진행하고 수상식을 진행하고 해커톤이 막을 내렸습니다. 오른쪽 사진과 같은 명함을 받고, 왼쪽 사진과 같은 세미나실에서 발..

[자바] 프로그래머스 - 스킬트리 [내부링크]

https://school.programmers.co.kr/learn/courses/30/lessons/49993 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제를 요약하자면 다음과 같습니다. 주어진 skill의 값이 "CBD" 라면, B를 스킬트리에 넣기 위해선 무조건 선행스킬인 C가 와야하고, D가 오려면 A,B 가 선행스킬로 와야합니다. 예시로 보자면 BACDE 같은 경우는 CBD의 순서가 아닌 BCD가 들어갔으므로 올바른 스킬트리가 아니지만 CBADF 같은 경우 CBD 순서로 왔기 때문에 올바른 스킬트리입니다. 이 문제를 풀기 위해서 저는 다음..

[우아한테크코스 5기] 프리코스 1주차 회고록 [내부링크]

우아한테크코스 5기, 1주차 프리코스 이번 우아한테크코스 1주차 프리코스 문제는 저번 기수와 달랐습니다. 코딩 테스트가 사라져서 그런지, 유형이 코딩 테스트 같은 느낌이었습니다. 총 7문제가 주어지고, 기능 요구 사항을 잘 맞추면서 풀면 됩니다. 문제의 난이도 같은 경우 개인적으로 5번까지는 정말 쉬웠고 6~7번은 난이도가 확 올라서 당황했습니다. 문제의 유형은 일반적인 문자열 및 구현 문제였습니다. 어떤 문제가 나왔고, 어떻게 풀었는지 문제의 유형은 일반적인 문자열 및 구현 문제였습니다. 사실 저번 기수까지는 한 눈에 알아볼 수 있는 변수명과 함수명을 작성하고, 인덴트 2도 맞춰야 했던 걸로 알고있습니다. 이번 1주차에는 별 다른 조건은 없었지만, 다들 슬랙을 보니 맞추시려고 하셔서 저도 이왕이면 우테..

[우아한테크코스 5기] 프리코스 시작 전 다듬기 [내부링크]

프리코스 시작 오늘로 우테코 프리코스 1주차가 시작 되었습니다. 낮에 오리엔테이션을 듣고나서 확실히 슬랙도 활발해지고, 다들 열의가 넘치셔서 좋았습니다. 오후 3시가 되고 문제를 보니깐, 이전 기수의 프리코스 문제와 달랐습니다. 코딩 테스트 문제가 조금 더 들어간 느낌으로 진행되는 것 같습니다. 자세한 문제 리뷰 및 회고는 1주차 마무리 되고 진행하겠습니다. 먼저 저는 프리코스 안내문과, 문제들을 간단하게 보고나서 어떤 식으로 진행할지 정리를 했습니다. 문제 자체가 어렵지는 않았지만, 아무래도 클린코드로 푸는 것이 중요한 것 같아서 공부를 더 하고 진행해야할듯 싶습니다. 슬랙에 어떤 분이 네이밍에 대한 글을 올려주셔서 정독했습니다. 아무래도 협업을 많이하는 직업이라서 이런 것들을 배워두면 확실히 도움이 ..

[우아한테크코스 5기] 지원과 프리코스 시작 [내부링크]

우아한테크코스 5기 - 지원과 프리코스 시작 이번에 우아한테크코스 5기가 열려서 백엔드 코스에 지원하게 되었습니다. 우테코는 개발자가 되고싶은 학생들이 정말 가고 싶어하는 부트캠프입니다. 신청 이유야 정말 다양하겠지만, 제 생각에는 취업과 개발자로서의 성장, 소통하며 배우는 우아한형제들의 기업 문화를 배울 수 있다는 점이 가장 큰 것 같습니다. 저 또한 우아한형제들은 엄청난 트래픽을 받는 서비스 회사이기 때문에, 많은 걸 배울 수 있다고 생각했고, 정말 너무 가고 싶은 기업 중 하나이기 때문에 꼭 우테코에 참가하고 싶었습니다. 우테코 접수를 위해 몇 주 동안 자기소개서만 쓰고 지우고, 첨삭받고 한 것 같습니다. 너무 간절했기 때문에 꾸며내지 않고 있는 저의 모습 그대로 솔직하게 작성을 했습니다..

[Safe pill] 프로젝트 개요 및 플로우 / 서버 기초 작업 [내부링크]

본 프로젝트는 캡스톤디자인 수업을 위해 제작하는 프로젝트입니다. 캡스톤디자인 2 주제 및 의의 공공 데이터를 이용하여 의약품 관련 오픈 데이터를 활용하여, 사용자의 증상에 따라 적합한 정보만을 필터링하여 필요한 약품 및 동시 복용의 가능 여부 정보를 제공 요즘 현대 사회에서 접할 수 있는 의약품은 점점 많아지고 있습니다. 이를테면, 편의점 및 약국에서 구매할 수 있는 상비약의 종류도 다양해졌고 처방받고 복용하는 약도 많아졌습니다. 이런 의약품을 섭취할 때, 같이 먹으면 안 되는 약도 있는데 보통의 경우 그냥 먹거나 검색을 하고 복용합니다. 문제는 함께 섭취하는 의약품에 대한 정보는 유명한 의약품에 한정되어 있습니다. 이런 경우 의약품은 보다 전문적인 분야라서 일반 사람들이 쉽게 알 수 없기 때문에 블로그..

티스토리로 개발 블로그를 옮기다. [내부링크]

네이버 개발 블로그 네이버에서 블로그 활동을 한지 어느덧 5년정도 지났습니다. 그동안 개발 관련 포스팅이 대부분이고, 종종 학교 생활에 관한 것과 제품 리뷰도 올렸습니다. 사실 네이버 블로그에 개발 관련 글이 너무 많기 때문에 이전부터 티스토리로 옮길까 말까 고민을 많이 했습니다. "작년에 했다면 더 좋았을텐데" 라는 생각이 계속 나서 티스토리로 옮기게 되었습니다. 개발자가 이용하기 더 좋은 블로그가 티스토리라고 생각했기 때문에 여러 블로그 플랫폼 중 티스토리를 선택하게 됐습니다. 네이버 블로그와는 다르게 조금 더 좋은 퀄리티의 글을 작성하고자 합니다. 이전 네이버 블로그는 이제 추억으로 남기고, 더 좋은 글을 작성하는 개발자가 되겠습니다! https://blog.naver.com/sosow0212 기록..