개발 블로그
[TIL] 스타트캠프 3일차
SSAFY/TIL 2024. 1. 4. 20:01

배운 점 오늘은 어제의 연장선으로 어제 고안한 아이디어를 디벨롭하고 프로토타입을 목업을 만들어 발표하는 시간을 가졌다. 발표 후에는 서로의 아이디어를 평가하고 1등을 선정하는 시간을 가졌는데 내가 어제 공감을 많이 했던 '버스 승차 표시' 서비스가 1등을 차지했다. 이 모습을 보면서 다시 한 번 어제 세운 나의 비전 '일상의 문제를 해결하는 프로그래머'를 공고히 하게 되었다. 물론 다른 사람들의 속마음을 알 순 없지만 추측하건데 이 문제가 가장 공감을 많이 받아 1등을 한 것 같기 때문이다. 우리 팀을 포함한 다른 팀들의 주제는 특정 집단을 타겟으로 하고 있는데 버스 승차 표시 서비스는 당장 우리 반에서도 모두가 한 번씩은 경험했을 법한 문제라는 생각이 들었다. '일상의 문제를 해결하는 프로그래머' 라는..

article thumbnail
1043번. 거짓말

아이디어 이 문제의 핵심은 크게 2가지이다. 1) 진실을 알고 있는 사람은 함께 파티에 참여한 사람에게 진실을 전파한다 2) 거짓말과 진실을 번갈아 듣는 사람이 있어서는 안된다 따라서 초기에 진실을 알고 있는 사람이 함께 파티에 참여한 사람에게 진실을 전파하고, 이 사람들이 또 파티에 함께 참여한 사람들에게 진실을 전파하는 구조인 것이다. 따라서 함께 파티에 참여한 사람들을 그래프 형태로 만들고 dfs 를 활용해 진실을 전파하면 '진실을 들어야 하는 사람들' 을 알 수 있게 된다. 이후 파티 참가자들을 확인하면서 '진실을 들어야 하는 사람'이 포함된 파티는 진실을 말하고 그렇지 않은 파티는 거짓말을 하면 된다 풀이코드 import java.io.BufferedReader; import java.io.IO..

[TIL] 스타트캠프 2일차
SSAFY/TIL 2024. 1. 3. 20:13

배운 점 오늘은 비전수립/디자인씽킹과 관련해 교육을 받았는데 디자인씽킹 과정에서 다시 한 번 나의 부족함을 깨달을 수 있었다. 해당 과정은 '불편한 점'을 찾고, 이를 해결할 방안을 제시하는 과정으로 진행되었는데 우리 조의 주제는 '안경 가상 피팅에서의 불편함'이었다. 사실 나는 안경에 기스가 나고, 안경테가 휘어도 안경을 잘 바꾸지 않는다. 물론 온전한 상태보다 안 좋긴하겠지만 이를 '불편함'으로 느끼지 않았기 때문이다. 그런데 같은 팀원은 안경에 대해 불편함을 느끼고, 안경을 바꾸기 위해 여러 서비스를 이용해봤고 그 중 가상 피팅에서의 불편함이 있었던 것이다. 또 다른 팀의 주제는 '버스기사가 승객을 지나치는 문제'를 주제로 하였다. 사실 여기서 머리에 망치를 맞았는데 당장 오늘 아침 내게 있었던 일..

[TIL] 스타트캠프 1일차
SSAFY/TIL 2024. 1. 2. 22:06

배운 것 오늘은 이것저것 SSAFY 에서 지켜야 할 규칙, SSAFY 생활에 대한 안내, 그리고 입문 특강이 있었다. 입문 특강은 구글코리아에서 일하시는 디렉터님께서 진행해주셨는데 '당신께서 우리들의 입장으로 돌아간다면 무엇을 고민할 것인가?' 를 주제로 특강을 진행해주셨다. 3 가지 키워드 Resolution Redefine Flow 를 제시해주셨는데 그 중에서 'Redefine' 이 가장 내게 와닿았다. Redefine 은 기존에 산업, 직무 중심에서 문제 중심으로 관점이 재정의 된다는 의미였다. 나는 개발자 취업과 관련해서 그냥 막연히 취업만 됐으면 좋겠다고 생각하고 정작 내가 어떤 문제를 해결하고 싶은 지에는 관심이 없었다. 본디 프로그래머라고 하면 코딩하는 사람이 아니라 '문제를 해결하는 사람'..

article thumbnail
5639번. 이진 검색 트리
Algorithm/백준 알고리즘 2023. 12. 17. 14:10

아이디어 전위 순회 결과를 토대로 이진 트리를 만들고 후위 순회한 결과를 출력하면 된다. 이 때 문제에서 주어지는 이진 트리는 3가지 조건을 만족하는 이진 트리인데 1) 노드의 왼쪽 서브트리에 있는 모든 노드의 키는 노드의 키보다 작다 2) 노드의 오른쪽 서브트리에 있는 모든 노드의 키는 노드의 키보다 크다 3) 왼쪽, 오른쪽 서브트리도 이진 검색트리이다. 전위 순회한 결과에서는 가장 먼저 출력된 것이 루트가 되는 노트이고 그 후로 나오는 값들 중 루트보다 작은 것들은 왼쪽 서브트리, 큰 것들은 오른쪽 서브트리에 위치하게 된다. 예제로 주어진 전위 순회 결과에서는 50 이 가장 최상단에 위치한 노드가 되는데 30 < 50 이므로 30 은 50 의 왼쪽 서브 트리에 추가가 된다. 24 < 50 이므로 왼쪽..

article thumbnail
13019번. A를 B로
Algorithm/백준 알고리즘 2023. 11. 21. 13:29

아이디어 A 의 한 글자를 골라 문자열의 가장 앞으로 옮기는 연산만을 통해서 A 를 B 로 변환해야 하기 때문에 B 의 마지막 문자부터 탐색해서 A 의 어디에 위치하는지를 알아내고 해당 위치보다 뒤에 있는 문자들은 모두 옮기는 연산을 수행해줘야 한다. BCA CBA 와 같이 문자열이 주어진다면 B[2] 인 'A' 가 동일하게 A[2] 에 위치해있으므로 이는 옮길 필요가 없다. 다음으로 넘어가서 B[1] 과 A[1] 을 비교하면 서로 다른 문자이므로 A[1] 에 위치한 'C' 는 옮겨야 하는 문자가 되는 것이다. 예제로 주어진 ABC CBA 에 대해서 이 과정을 수행해보면 다음과 같다 A[2] != B[2] 이므로 C 는 옮긴다(연산 횟수 : 1) A[1] != B[2] 이므로 B 는 옮긴다(연산 횟수 :..

article thumbnail
11722번. 가장 긴 감소하는 부분 수열
Algorithm/백준 알고리즘 2023. 11. 2. 10:23

아이디어 i번째 숫자를 마지막으로 하는 부분 수열은 이전(1 ~ i - 1)에 만든 부분 수열에 i 번째 숫자를 이어붙임으로써 만들 수 있다. dp[i] 를 i 번째 숫자를 마지막으로 하는 부분 수열 중 가장 긴 부분 수열의 길이라고 정의하면 아래와 같은 점화식을 세울 수 있다. dp[i] = 1 ~ i - 1번째 숫자 중 i 번째 숫자보다 큰 경우에 대해 Math.max(dp[j] + 1, dp[i]) 풀이코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void..

article thumbnail
2644번. 촌수계산
Algorithm/백준 알고리즘 2023. 11. 2. 10:19

아이디어 입력을 토대로 정점 간의 연결 관계를 표현한 그래프를 만들고 촌수를 구해야 하는 대상(시작점)에서 dfs 를 수행한다. dfs 를 수행했을 때 촌수를 구해야 하는 대상(끝점)에 도달하면 현재까지의 depth 를 계산해서 촌수를 출력하면 되고 만약 도달하지 못하면 -1 을 출력하면 된다. 풀이코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int target1; static int target2; static int[][] graph; static boolean[][]..