전체 글314 백준 [자바 java] 12919 : A와 B 2 https://www.acmicpc.net/problem/12919이 문제는 보자마자 bfs를 이용해서 풀어야겠다! 라고 생각했다.그래서 생각한대로 풀었는데 시간초과가 났다.. 알고보니까 나는 S를 T로 만들어가는 과정에서 BFS를 사용했는데, T를 S로 바꾸는 과정에서 BFS를 사용해야 효율적이다.왜냐하면 S를 T로 만들어가는 과정은 모든 경우의 수를 다 탐색하는데 , T를 S로 바꾸는 과정은 A가 뒤에 있을 때에는 A를 빼고, B가 앞에 있을때에는 B를 빼고 순서를 뒤바꾸는 과정만 거쳐도 정답을 도출할 수 있다. 앞으로 이런 문제가 나오면 탑다운 방식으로 풀것인지, 바텀업 방식으로 풀것인지 생각을 해야할 것 같다. import java.io.*;import java.util.*;import java... 2025. 6. 28. 백준 [자바 java] 20920: 영단어 암기는 괴로워 https://www.acmicpc.net/problem/20920단어가 주어지고, 각 조건을 만족하는 순서대로 출력을 해야한다.처음엔 실버 3문제라 쉽게 풀릴거라고 생각했는데 생각보다 쉽지 않았다.이 문제는 java의 유용한 라이브러리를 많이 써야하는 문제였다. 해설for(int i =0;i=m) map.put(arr[i],map.getOrDefault(arr[i],0)+1);}단어를 입력받을 때, 단어가 조건의 길이를 넘기면 해시맵에 해당 단어를 넣는다.이때 value값은 해당 단어가 나온 횟수이다. map에 이미 단어가 존재한다면 그 value를 꺼내서 1을 더해 다시 넣어주고, 아니면 1을 넣어준다나는 보통 이럴 때 contains 함수를 사용했는데 getOrDefault 함수를 쓰니 더 편리하다.. 2025. 6. 28. [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. 이전 1 2 3 4 5 6 7 ··· 53 다음