개발 블로그
[WIL] SSAFY 2주차 회고
SSAFY/WIL 2024. 1. 14. 13:16

배운 것 1. Python 기초 2. Git & Github 사용법 3. 게이미피케이션을 통한 코딩의 즐거움 이번 주를 끝으로 SSAFY 에서 진행하는 스타트캠프가 끝났다. 이번 주의 시작은 로봇퀘스트와 크리에이터 챌린지를 통해 내가 코딩한 결과물을 육안으로 확인할 수 있는 시간들이었다. 특히나 로봇퀘스트 시간은 너무나 즐거운 시간이었다. 한 번의 실행으로 최대한 많은 미션을 수행하는 것이 우리팀의 목표였는데 수차례의 시행착오 끝에 반 내에서 가장 많은 미션을 연속으로 수행해내는 데에 성공했기 때문이다. 주차 후반부에는 앞으로 함께할 반 담당 강사님께서 Python 기초, API 에 대한 간단한 설명 및 실습, Git & Github 에 대한 설명을 해주셨다. Git & Github 는 과거에 사용한 적..

article thumbnail
16236번. 아기 상어
Algorithm/백준 알고리즘 2024. 1. 14. 11:02

아이디어 먼저 BFS 를 통해 현재 상어의 위치에서 가까운 위치부터 탐색을 진행하며 먹을 수 있는 물고기가 있는지 확인한다. 이 때 자신보다 큰 물고기가 있는 칸은 상어가 통과할 수 없으므로 이 점에 주의해서 BFS 를 수행한다. 먹을 수 있는 물고기가 없으면 false 를 반환하고 먹을 수 있는 물고기가 있다면 1. 해당 물고기의 위치로 상어를 이동시키고, 2. 소요된 시간을 더해주고 3. 먹은 물고기 수를 늘려준 후 4. 먹은 물고기 수가 상어의 크기와 같다면 상어의 크기를 키워준다. 5. true 를 반환한다. 위 내용이 false 를 반환할 때까지 반복하면 문제에서 요구하는 답을 얻을 수 있다. 풀이코드 import java.io.BufferedReader; import java.io.IOExce..

14938. 서강그라운드
Algorithm/백준 알고리즘 2024. 1. 12. 20:48

https://www.acmicpc.net/problem/14938 14938번: 서강그라운드 예은이는 요즘 가장 인기가 있는 게임 서강그라운드를 즐기고 있다. 서강그라운드는 여러 지역중 하나의 지역에 낙하산을 타고 낙하하여, 그 지역에 떨어져 있는 아이템들을 이용해 서바이벌을 www.acmicpc.net 아이디어 각 지역에 낙하했을 때 얻을 수 있는 아이템은 아이템이 있는 지역과 낙하한 지역 간 거리가 수색범위를 벗어나지 않는 경우이다. 따라서 1. 모든 지역 간의 최단 경로의 길이를 구하고 2. 임의의 낙하 지역에서 타 지역과의 거리가 수색 범위를 벗어나지 않는 경우에 한해 해당 낙하 지역에서 얻을 수 있는 아이템을 계산하고 3. 이 값들을 비교해 최대값을 얻어내면 된다. 입력의 크기가 작아 플로이드..

[TIL] 스타트캠프 마지막
SSAFY/TIL 2024. 1. 12. 20:42

배운 것 오늘은 git 이 어떤 과정을 통해서 버전 관리를 하는지, 그리고 로컬에서 작업한 내용을 원격 저장소인 github 에 올리는 방법 등에 대해 배웠다. 나머지 시간은 자습을 했는데 다른 분께서 알고리즘 문제 하나를 물어보셨다. https://www.acmicpc.net/problem/11660 11660번: 구간 합 구하기 5 첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 M개의 줄에는 네 www.acmicpc.net 단순히 합을 구해야 하는 매 횟수마다 2중 for문을 반복하게 되면 최악의 케이스는 연산을 거의 100억번 가까이 해야하..

article thumbnail
17144번. 미세먼지 안녕!
Algorithm/백준 알고리즘 2024. 1. 11. 21:39

아이디어 문제는 되게 길어보이지만 결국 정리하자면 정해진 시간 동안 1. 확산 2. 공기청정 과정을 수행하고 마지막에 남은 먼지 양을 체크하는 문제이다. 공기청정 과정은 배열에 담긴 값을 한 칸씩 밀면 되는 단순한 단계이고 약간 머리를 써야 하는 부분은 '확산' 이다. '확산'은 현 시점에서 먼지가 있는 모든 위치에서 동시에 일어나야 하므로 배열 하나만 사용할 경우 현 시점에 확산된 먼지가 동일한 시점에 재확산 되는 현상이 발생한다 따라서 '확산' 시에는 임시 배열을 만들어 임시 배열로 확산을 수행해야 한다. 풀이코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java...

[TIL] 스타트캠프 8일차
SSAFY/TIL 2024. 1. 11. 21:27

배운 것 인터넷, 클라이언트/서버, API 에 대한 간략한 개념 Markdown Git 과 Github 오늘은 Markdown 을 배운 김에 TIL 도 Markdown 으로 작성해보고 있다. 사실 오늘 학습한 내용들은 다 과거에 학습했던 내용이지만 지속성 있게 학습을 하지 않아 새로운 것처럼 느껴졌다. 그리고 느낀 점은 CS 공부를 할 때 질문이 나오면 이런 식으로 대답해야지라는 암기식으로 학습을 하다보니 이해를 전혀 못하고 있다는 점이다. 예전에 면접스터디를 할 때 분명히 API 가 무엇인지 설명해보세요 라는 예상 질문을 만들고 거기에 대해 답변하는 훈련을 했었다. 근데 오늘 '소프트웨어 간 통신을 위한 인터페이스'를 뭐라고 하나요? 라고 물었을 때 뭐지...? 하면서 머리 속에 생각나는 건 '소프트웨..

article thumbnail
[TIL] 스타트캠프 7일차
SSAFY/TIL 2024. 1. 10. 21:49

배운 것 Python 기초 문법 및 자료형에 대해 학습하는 시간을 가졌다. 과거에 Python 을 했던 적이 있어 내용 자체는 크게 어렵지 않았다. 다만 5~6년 전을 마지막으로 Python 을 처음 써보는 거고 Java 에만 익숙해 있던 터라 조금씩 헷갈리는 부분들이 있었다. 특히 문자열과 숫자의 덧셈 부분이 그랬다. Java 에서는 다음과 같이 출력한다고 했을 때 자동 형변환이 일어나 에러가 발생하지 않았었다. System.out.println("나이 : " + 28); 하지만 Python 에서는 이렇게 문자열과 숫자를 더하려고 하면 type 문제로 인해 에러가 발생하게 된다. print('나이 : ' + 28) 추후엔 다시 Java 로 돌아갈지언정 SSAFY 1학기동안은 Python 을 사용해야 하..

article thumbnail
11054번. 가장 긴 바이토닉 부분 수열

아이디어 Sk 를 기준으로 양쪽을 잘라보면 S1 Sk+1 > ... > Sn 이므로 각각 증가하는 부분 수열, 감소하는 부분 수열임을 알 수 있다. 따라서 가장 긴 바이토닉 부분 수열은 배열의 각 원소를 Sk 로 놓고 가장 긴 증가하는 부분 수열, 가장 긴 감소하는 부분 수열을 구한 후 바이토닉 부분 수열을 계산하고, 각 바이토닉 부분 수열 중 가장 긴 놈의 길이를 출력하면 된다. 풀이코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { publi..