Algorithm/Java 14

[알고리즘_Java] 백준 2858번 기숙사 바닥

사진처럼 가로(l), 세로(w)로 가정했을때 r=l*2 + (w-2)*2가 되면서 b=(l-2)*(w-2)가 되는 경우 정답이다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new Buffe..

Algorithm/Java 2022.03.19

[알고리즘_Java] 백준 10974번 모든 순열 (재귀)

함수의 첫번째 if문은 sub배열의 사이즈가 n-1일때 탈출 조건을 만들어 놓고 마지막 숫자를 넣어서 사이즈가 n이 되고 result에 저장된다. sub로 기본값=시작값을 잡고 new_sub를 새로 생성하고 함수를 호출 할때마다 new_sub는 sub로 넣어준다. (표를보면 DFS 호출이 늘어날때마다 new_sub값이 sub값이 되는걸 볼 수 있다) 거의 2주간 스터디에서 재귀문제 이거 하나로만 계속 보고있었다... 코드는 스터디장님이 직접 짜셨다. 계속 DFS 함수를 몇번이나 호출하고 return으로 돌아가는게 이해가 안가서 표로 만들어봤다. return 했을때의 i의 값이 너무 헷갈렸는데 일단 정답을 아니까 표를 채우고 i값을 따라가니까 리턴했을때 어디로 돌아가는지 알 수 있었다. 정말 어렵고 복잡하..

Algorithm/Java 2022.03.12

[알고리즘_Java] 백준 9094번 수학적 호기심

(a2+b2+m)/(ab)의 값이 정수일때 (a,b)의 개수를 구하는거기 때문에 먼저 식의 값이 정수인지 확인해야한다. double test = (double)(a*a+b*b+m)/(a*b); -> 식의 값을 실수로 구하고 if(test-(int)test==0.0) -> 식의 값이 정수인지 판별했습니다 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class Main { public static void main(String[] args) throws Num..

Algorithm/Java 2022.03.02

[알고리즘_Java] 백준 2702번 초6 수학 (최소공배수&최대공약수)

a=5, b=10이면 최대공약수는 둘중 작은수 a=5보다 작거나 같다 최소공배수눈 둘중 큰수 b=10보다 크거나 같다 import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int t = Integer.parseInt(br.readLine()); for (int i = 0; i < t; ..

Algorithm/Java 2022.02.28

[알고리즘_Java] 백준 5555번 반지 (substring)

"abc"를 찾고있다고 하고 문자열이 "cflwdadcab"가 주어졌다고 가정한다. "cflwdadcab"의 끝부분 "ab"가 끝이 아닌 첫부분 "cfl~"가 붙어있다고 생각해서 "abc" , "bcf"까지 비교해야한다. import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); String ss = br.readLine();..

Algorithm/Java 2022.02.25

[알고리즘_Java] 백준 17173번 배수들의 합 (HashSet)

import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); String[] st = br.readLine().split(" "); //n과 m int n = Integer.parseInt(st[0]); //k의 배수를 어디까지 구할지 판단하는 기준 String[] st2 = br.readLi..

Algorithm/Java 2022.02.19

[알고리즘_Java] 백준 10872번 팩토리얼 (재귀, 메모이제이션)

-> 함수 여러번 호출 방식 import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int N = Integer.parseInt(br.readLine()); bw.write(fact(N)+""); bw.flush(); } public static int fact(int N){ if(N==0){ return 1; } retu..

Algorithm/Java 2022.02.04

[알고리즘_Java] 백준 10870번 피보나치 수 5 (재귀, 메모이제이션)

-> 함수 여러번 호출 방식 import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int n = Integer.parseInt(br.readLine()); bw.write(pibo(n)+""); bw.flush(); } public static int pibo(int n){ if(n==0){ return 0; }else ..

Algorithm/Java 2022.02.04

[알고리즘_Java] 백준 2292번 벌집

저는 각 층에 있는 방 수를 세어봤는데 (층 수-1)*6씩 늘어나는 것을 알아 냈고 위처럼 패턴을 이해했습니다. N이 전 층까지의 방 수보다 크고 현재 층까지의 방 수까지보다 작거나 같을때 현 층을 알 수 있습니다. 1층은 예외로 먼저 처리했고 2층부터 시작해서 min과 max로 층을 확인했습니다. import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWri..

Algorithm/Java 2022.02.02

[알고리즘_Java] 백준 1316번 그룹 단어 체커

예제 1번 -> 단어 모두 h,a,p,y 모두 같은 알파벳이 떨어져 나오지 않기 때문에 그룹단어 총 3개 예제 2번 -> 'aba' 를 보면 첫번째와 마지막 'a' 사이에 'b'가 껴있기 때문에 'a'는 그룹단어가 아니다. 이와같이 'abab', 'abcabc'도 그룹단어가 아니기 때문에 그룹단어는 'a' 1개 -> 소문자만 들어오기 때문에 총 26개의 불리안 배열을 만들어 놓고 단어에 쓰인 알파벳 인덱스 번호 값을 true로 체크한다. -> 이전에 쓰인 같은 알파벳이 들어왔을때 바로앞에서 썼던 것과 일치하는지, 아니면 떨어져서 나왔는지 확인해서 그룹단어를 체크한다. import java.io.*; public class Main { public static void main(String[] args) ..

Algorithm/Java 2022.02.01