알고리즘 풀이/Java(108)
-
[알고리즘] 소용돌이 예쁘게 출력하기
https://www.acmicpc.net/problem/1022 1022번: 소용돌이 예쁘게 출력하기 첫째 줄에 네 정수 r1, c1, r2, c2가 주어진다. www.acmicpc.net 나의 풀이 - 좀 복잡하게 했다. - 코드가 지저분하기 때문에 리팩토링해보고 싶다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int r1 = sc.nextInt(); int c1 = sc.nextInt(); int r2 = sc.nextInt(); int c2 = sc.nextInt(); int maxR = Math.max(r1, r2) ..
2024.01.19 -
[알고리즘] 창용 마을 무리의 개수
나의 풀이 - connected components를 찾는 문제였다. - 로직은 크게 두 단계이다. - 시작할 위치를 정하고 dfs를 돌린다. 이때 방문되는 노드는 모두 하나의 무리가 된다. - 이를 반복하며 모든 노드가 방문 상태가 될때까지 진행한다. - 메소드로 세분화하여 메소드를 구현하였다. import java.util.Scanner; import java.util.ArrayList; import java.util.HashMap; import java.io.FileInputStream; // 방문하지 않은 노드 중 하나를 잡아서 bfs를 실행, 이걸 하며 방문한 노드를 묶으면 하나의 무리가 된다. // 이를 모든 노드를 방문할 때까지 반복한다. class Solution { public stati..
2024.01.07 -
[알고리즘] 숫자 배열 회전
나의 풀이 - 자바에서는 C와 다르게 배열을 초기화할때 변수를 넣어줘도 런타임 에러가 나지 않는다는 것을 배웠다. - 자바에서도 파이썬과 마찬가지로 배열 a = b로 만들고 b의 인덱스에 해당하는 값을 바꿔도 a의 값도 바뀐다는 것을 배웠다. - clone 메소드를 이용하면 2차원 배열의 경우 얕은 복사로 된다는 것을 배웠다. - 2차원 배열 깊은 복사를 하려면 Arrays.copyOf(original[i], cols)와 같이 Arrays.copyOf를 사용한다는 것을 배웠다. import java.util.Scanner; import java.io.FileInputStream; class Solution { public static void main(String args[]) throws Excepti..
2024.01.01 -
[알고리즘] 스도쿠 검증
나의 풀이 - 중복 검증은 HashSet의 add 메소드로 할 수 있다. - 메소드를 분리해서 하는게 심플하다는 것을 느꼈다. import java.util.Scanner; import java.util.HashSet; import java.io.FileInputStream; class Solution { public static void main(String args[]) throws Exception { Scanner sc = new Scanner(System.in); int T; T=sc.nextInt(); for(int test_case = 1; test_case
2024.01.01 -
[알고리즘] 두 개의 숫자열
나의 풀이 - longer에 긴 것을 할당해준게 핵심 - Memory Error가 뜨면 index 에러일 수도 있다. import java.util.Scanner; import java.io.FileInputStream; /* 사용하는 클래스명이 Solution 이어야 하므로, 가급적 Solution.java 를 사용할 것을 권장합니다. 이러한 상황에서도 동일하게 java Solution 명령으로 프로그램을 수행해볼 수 있습니다. */ class Solution { public static void main(String args[]) throws Exception { Scanner sc = new Scanner(System.in); int T; T=sc.nextInt(); for(int test_case..
2024.01.01 -
[알고리즘] 최빈수 구하기
나의 풀이 - HashMap.getOrDefault를 배웠다. - for (int i; int[] tests)로 for each를 사용한다는 것을 배웠다. - mode 뿐만 아니라 maxCount도 갱신을 해줘야 했는데 이걸 놓쳐서 한참 헤맸다. 조심하자!! import java.util.Scanner; import java.util.HashMap; import java.io.FileInputStream; class Solution { public static void main(String args[]) throws Exception { Scanner sc = new Scanner(System.in); int T; T=sc.nextInt(); for(int test_case = 1; test_case m..
2024.01.01