일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- BFS
- 자바 1003
- 자바 28278
- 백준 10866 자바
- 10813 자바
- 자바 10866
- 10810 자바
- 2346 풍선 터뜨리기
- 1764 자바
- 10807 자바
- 28278 스택 2
- 백준
- 백준 2346 자바
- 티움투어
- 코딩테스트
- 자바
- 2798 자바
- IAM Identity Center
- 2164 자바
- 자바 2164
- 파이썬
- 백준 1764 자바
- 1010 자바
- 자바 2346
- 데보션영 3기
- 백준 28278 자바
- 그리디
- 2748 자바
- dfs
- IAM 사용자
- Today
- Total
목록코딩테스트/Java (57)
자두의 데브로그

https://www.acmicpc.net/problem/1037 오랜만에 코테 공부하려니까 몬가 새롭고,, 자소서보다 재밌고,, 신선하니,, 매일 풀어야겠다 ^^ 이 문제는 진짜 약수(1과 본인을 제외하고 남은 약수들)를 가지고 원래의 수가 어떤 수였는지를 맞추는 문제였다. 먼저 Collections의 sort 함수를 사용해서 정렬을 하기 위해 ArrayList로 배열을 선언하고, 배열의 길이가 짝수라면 맨 앞과 맨 뒤의 원소를 곱해주고 만약 배열의 길이가 홀수라면 가운데의 원소를 제곱해서 답을 구하면 됐다. 여기서 주의해야할 점은 홀수일 때, 맨 앞의 원소로 하면 안되는 게 나는 25 같이 제곱수들 중 약수가 1과 본인 포함 3개만 있는 수들만 생각해냈지만 생각해보면 모든 제곱수의 약수 개수가 3개일..
https://school.programmers.co.kr/learn/courses/30/lessons/120834 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제는 크게 어렵지 않았지만 문자열을 거꾸로 뒤집는 걸 함수를 사용하려고 하니 모르겠어서 해당 부분은 다른 블로그를 참고했다. StringBuffer로 받아서 reverse 함수를 사용하고, toString 으로 문자열로 변경하면 된다. class Solution { public String solution(int age) { String answer = ""; whi..

https://school.programmers.co.kr/learn/courses/30/lessons/42862?language=java# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 파이썬으로 풀었던 문젠데 너무 바빠지기 전에 그리디 쉬운 문제 하나 풀고 싶어서 풀어봤다. 근데... 왜 틀린 건지 모르겠는데 기괴한 코드 하나 작성했다. 100점 만점에 90점이 나왔는데 어떤 부분이 틀렸는지 반례를 못 찾겠어서 일단 올려두고.. import java.util.*;class Solution { public int solution(int n, int[]..

https://www.acmicpc.net/problem/1325 일단 이 문제는 단방향 그래프이기 때문에 한 쪽에만 갈 수 있는 정점에 대한 정보를 저장해야되는 게 특징이었다. 근데 나는 아직도 ArrayList 안에 배열 넣는 걸 선언하는 게 어렵다. 헷갈려요.., 무튼 입력 잘 받아주고 나서 처음에 dfs로 구현을 했는데.. 채점을 돌렸더니 1분동안 채점을 하는 엄청나게 시간이 오래 걸리는 코드를 구현해버렸다. 이와중에 dfs로 구현할 때 for문으로 구현하면 시간초과가 난다고 한다. dfs 구현 자체는 어렵지 않았다. 원래 알고 있는 dfs대로 잘 구현만 하면 됐고, 가장 많은 컴퓨터를 해킹하는 수를 미리 저장해두고 해당 값을 갖는 인덱스를 출력하는 방식으로 구현했다.import java.io.*..
https://www.acmicpc.net/problem/1697 약간 오랜만에 이런 새로운 문제 푸니까 어려웠는데 문제를 풀기 전 어떤 식으로 문제 풀이를 생각했냐하면....동생이 있는 곳으로 이동할 수 있는 방법이 총 세 가지이기 때문에 bfs에서 탐색할 때 첫 번째 위치에서 갈 수 있는 곳이 총 3개다. 그러니까 상하좌우 문제처럼 다 가봐야한다. 만약 변경한 값이 동생이 있는 곳과 동일하면 바로 return하고 아니라면 queue에 add 하고 변경된 값의 인덱스에 해당하는 visited 값에 1을 더해주면 되는 문제였다. 이 문제는 꼭!!!!! 다시 풀어보자. import javax.management.Query;import java.io.*;import java.util.*;public clas..
https://www.acmicpc.net/problem/11725 dfs나 bfs로 풀면 금방 풀 수 있는 문제 같았다. 근데 오랜만에 상하좌우로 탐색하는 게 아니라 데이터를 ArrayList 배열에 저장해서 푸는 문제였어서 처음 입력 받는 걸 헤맸다. ArrayList가 Integer 형태로 받아서 for문에서 크기 비교가 안됐었는데 크기 비교할 필요 없이 array[x] 내에 있는 값을 가져오면 되는 거였어서 for(int i: array[x]) 이런 식으로 구현하면 됐었다. 예를 들어 가장 처음에 루트 노드인 1이 들어간다면, 예시로 1 4 를 입력 받고 있었으니, visited[1]은 true가 되며 i는 4가 되고, 그럼 visited[4]는 방문하지 않았으니 parent[4]는 1이 되는 방..
https://www.acmicpc.net/problem/2178 지나가는 최소 칸 수를 구해야하기 때문에 dfs와 bfs 중 bfs로 풀어야 한다고 한다. dfs로 풀어보진 않았지만 dfs로 풀면 시간 초과가 난다는 소식이 ... 푸는 방법은 크게 어렵지 않고 동일하게 상하좌우 방향 지정해서 인접한 곳을 방문하는 방식으로 풀면 된다. (0, 0)에서 시작하면 되고 지나가는 길마다 직전에 지나왔던 길의 값에 1을 더해주면 가장 오른쪽 아래 즉, 마지막으로 방문해야하는 곳에 도달했을 때 몇 개의 칸을 지나왔는지 알 수 있다. import java.io.*;import java.util.*;public class Main { static int[] dx = {0, 0, 1, -1}; static ..
https://www.acmicpc.net/problem/2667 모든 2차원 배열을 탐색하면서 인접한 경우에 대해 단지로 묶는 문제였다. DFS, BFS 문제 중에서 개인적으로 많이 어렵게 느끼는 dx, dy 사용해서 상하좌우 탐색하고, 인접한 경우에 대해 판별해야하는 문제이다. 전에 풀었던 문제에서 많이 익숙해져서 동일하게 풀었는데 풀면서 헷갈렸던 부분은 어디서부터 cnt를 늘려줘야할지였다. 처음에 cnt는 1로 초기화해두고 (dfs에 들어가는 순간 단지에 하나의 가구는 포함된 상태) 시작하고, dfs 함수 내에서 cnt를 증가시켜주고 가장 먼저 dfs를 호출한 main 함수 내에 있는 dfs의 실행이 끝나면, cnt를 ArrayList에 add 하여 값을 저장한다. 총 단지의 수는 각 단지의 가구..
https://www.acmicpc.net/problem/1012 dfs나 bfs를 사용하여 푸는 문제로 위, 아래, 왼, 오 네 가지 방향으로 가보면서 만약 인접한 노드가 있으면 방문하면서 최소한으로 배추흰지렁이를 구입하도록 하는 문제였다. 아직 생으로 dfs, bfs 문제를 푸는 게 좀 어려워서 다른 사람의 코드를 참고하여 dfs와 bfs 모두를 사용하여 풀어보았다. 사실 어떤 식으로 푸는지 감은 오는데 막상 혼자 풀어보려고 하면 잘 안풀린다. 동일한 문제를 반복적으로 풀어보면서 내가 어떤 부분이 약한지 파악하는 것도 필요할 것 같다. import java.io.*;import java.util.LinkedList;import java.util.Queue;import java.util.StringTo..