본문 바로가기

분류 전체보기312

[Docker] 도커란 무엇일까 나는 프로젝트를 하면서 aws에 프로젝트를 배포하는 역할을 많이 했었는데, 거의 다 docker를 사용했다.앞으로도 애용할 예정이기에 더 자세히 알아보기로 했다 도커가 필요한 이유컴퓨터마다 각각의 버전과 os가 다르다. -> 단순히 내 컴퓨터 내의 코드를 전송한다고 잘 작동한다는 보장이 전혀 없다. 우리가 배포를 하면 작성한 코드는 서버용 컴퓨터에서 돌아가게 된다.서버용 컴퓨터와 개발용 컴퓨터는 버전 등의 요소가 다를수밖에 없다. 만약 도커가 없다면, 다음과 같이 두가지의 프로그램이 한 서버에서 돌아갈 때 두 프로그램이 쓰는 특정 툴의 버전이 다르다면 에러가 날 수 있다.그럼 이런식으로 각각 만들면 되지 않나?라고 생각할 수 있지만 이렇게 하면 각 부분이 컴퓨터자원을 잘라서 가져가야하고, 또 겹치는 os.. 2025. 6. 26.
백준 [자바 java] 14904 : 쉬운 최단거리 https://www.acmicpc.net/problem/14940지도가 주어지고 각 위치마다 목표지점까지 얼마나 걸리는지를 출력하는 문제이다.우선 bfs를 이용한 문제라는건 인식했다!그래서 처음에는 각 계층마다 cnt값을 넣어주는 방식으로 답을 정의했는데 생각해보니까 이 문제는 각 위치마다의 값을 저장하는 문제이기 때문에 그냥 그 시점에 해당 노드 값에 1을 더한 값을 넣어주면 되는 것이었다. 핵심 개념for(int i = 0;i우선 입력을 받다가 2를 만나면 여기가 도착지점이므로 이 노드를 큐에 넣는다. int[] dx = {0,1,0,-1};int[] dy = {1,0,-1,0}; while(q.size() != 0){ xy now = q.poll(); for(int k = 0;k= 0.. 2025. 6. 25.
백준 [자바 java] 20922 : 겹치는 건 싫어 https://www.acmicpc.net/problem/20922주어진 배열에서 같은 수가 k개 이하인 배열의 최대 길이를 찾는 문제이다.HashMap를 사용하여 각 숫자의 등장횟수를 저장하였다.투포인터를 사용했고, start는 0부터 하나하나 올렸고, end는 최대로 올리고, start가 변화함에 따라 end를 올릴 수 있게 되면 또 최대한 올리는 방식을 사용했다. while(start 핵심 부분은 여기다end값을 탐색하고, 해당 값이 k값과 같다면 더 이상 늘어나면 안되므로, end값을 갱신하지 않고, break를 통해 해당 루프를 빠져나간다. start가 하나 늘어나면, 원래 start 위치에 있던 노드는 현재 탐색중인 배열에 포함되지 않는다.따라서 이전 노드에 해당하는 hashMap값은 해당 .. 2025. 6. 24.
백준 [자바 java] 2607 : 비슷한 단어 원래 문자를 다루는 문제를 정말 안좋아하는데그래서 안풀다간 코테에서 문자 나오면 큰일날 것 같아서 풀었다.https://www.acmicpc.net/problem/2607 이 문제는 두 단어가 있을 때 두 단어의 알파벳 구성이 같거나 하나 다른 경우를 찾아내는 문제이다. 핵심 포인트char[] main = br.readLine().toCharArray(); 일단 toCharArray를 통해서 char형태의 배열로 만들었다. char[] now = br.readLine().toCharArray();List list = new LinkedList();for(int j = 0;j그 다음 각 단어를 받아 똑같이 char 배열로 만들고 리스트에 각 알파벳을 담았다. int cnt = 0;for(int j = 0;.. 2025. 6. 24.
백준 [자바 java] 10655번 : 마라톤 https://www.acmicpc.net/problem/10655이 문제는 딱 봤을 때 브루트포스 문제임을 알 수 있었다. 그런데 단순히 처음부터 끝까지 매번 계산하는 것 보다 누적합을 쓰는 것이 더욱 효율적이라는 생각이 들어 그렇게 풀었다. for(int i = 0;i먼저 각 좌표의 값을 입력받는다. for(int i = 1;i그 다음 누적합 배열을 생성한다. now는 현재 노드와 이전 노드의 거리를 뜻한다. 거리는 절댓값을 사용해야하니까 Math 라이브러리의 abs를 사용하였다. 이 값을 누적합 배열의 이전 값과 더한다. int ans = Integer.MAX_VALUE;for(int i = 1;ians는 가장 작은 값이 되어야하므로, 초기값은 가장 큰 값으로 잡는다.그 다음 각 노드를 건너 뛸 때.. 2025. 6. 24.
백준[자바 java] 17086 : 아기상어 2 https://www.acmicpc.net/problem/17086오래전에 풀었던 문제인데 쉬운 문제부터 다시 감잡으려고 풀었다. bfs로 각 격자 중 아기상어로부터 가장 멀리 떨어져있는 격자의 거리를 구하는 문제이다. 이 문제에서는 위, 아래, 양 옆, 대각선 총 8개의 격자를 탐색해야했다.이를 하나하나 코드화하기는 지저분하고 힘드니까 dx,dy테크닉을 사용하였다. 또한 한번 방문한 격자는 다시 방문하는 것은 메모리, 시간 낭비이므로 vis배열을 이용하여 중복탐지를 하였다. bfs의 사이클을 탐지하기 위해서 x,y값이 -1인 값을 매 사이클이 시작할 때마다 넣었다.만약 방금 poll 한 값이 -1이라면 이건 사이클이 한번 돌았다는 이야기이므로, 거리를 하나 더해주고, 새로운 (-1,-1)객체를 큐에 넣.. 2025. 6. 24.