목록알고리즘 (27)
지극히 개인적인 개발블로그
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bVRU2y/btqy5TnIRpI/sAhNbj4AcDbJx6t41XVPlK/img.png)
풀이: 문제의 분류가 브루트 포스인만큼 for문 냅다 돌려서 생성자를 구해내면 됩니다. String의 메소드인 valueOf와 charAt의 사용법을 알아두는게 중요합니다. import java.util.*; public class Sol_2231 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int ans = 0; for(int i=N; i>0; i--) { int sum = 0; String strN = String.valueOf(i); for(int j=0; j
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cEI6oY/btqyRM1B0MJ/ybhOBnrNnPqH7jcORKR6BK/img.png)
일반적인 소수 구하는 방식을 사용했다가는 시간 초과가 뜬다. 시간복잡도가 O(n^2)이기 때문이다. 그렇기 때문에 다른방식으로 사용해서 문제를 풀었다. 또한 Scanner가 아닌 Buffer로 입출력을 받았느데 아직은 익숙치 않아서 불편하더라 그래도 시간면에서는 훨씬 효율적이라고 하니 익혀둬야겠다 import java.io.*; import java.util.StringTokenizer; public class Sol_1929 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = n..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/xZ6td/btqyMscgBmz/wGs1QPmB0dKAypafEYtTp1/img.png)
import java.util.Scanner; public class Sol_10250 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int T = sc.nextInt(); int floor = 0; //층 int room = 0; //호수 String mid = ""; while(T != 0) { T--; int h = sc.nextInt(); int w = sc.nextInt(); int n = sc.nextInt(); if(n > h) { floor = n % h; room = n/h + 1; if(room
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cZ4I1B/btqyGIes7kc/ScPYsoPbJshmBnZRvx3411/img.png)
우선 규칙을 찾아야 합니다. 방(1)은 1개 방(2)~방(7)은 2개 방(8)~방(19)은 3개 방(20)~방(37)은 4개 방 사이의 간격이 6, 12, 18로 나뉘어진다는걸 안다면 쉽게 풀 수 있습니다. import java.util.Scanner; public class Sol_2292 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); int ans = 1; //정답의 개수. 최소 방 1개는 거친다 int room = 1; //최초로 시작하는 룸 넘버 int addNum = 6; //공차가 6인 등차수열 while(true) { if(num
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/lKXFO/btqyEzKbRlF/0CfpkEV9FO3SAfPCa6K581/img.png)
쉽지 않은 문제였다. 3가지 경우로 나누고 접근했다. (1)5로만 나누어 지는 경우 ex)10, 20 (2)3으로만 나누어 지는 경우 ex)6, 9 (3)5와 3으로 나눌수 있는 경우 ex)11, 18 if문으로 분기를 나누어 판별할텐데 18은 3으로 먼저 나누어 버린다면 오답이 되므로 3으로 나누는 분기는 가장 마지막에 위치한다. import java.util.Scanner; public class Sol_2839 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); if(n%5 == 0) { System.out.println(n/5); return; } else{ int a..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/yXhJr/btqyD7SJ0EY/GlmtkqVW58OJAw4XkgKVs1/img.png)
너무 단순하게만 생각했을까요. if문으로 크로아티아 알파벳만 판별하면 될줄 알았는데 런타임에러가 뜨는군요 import java.util.Scanner; public class Sol_2941 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String word = sc.next(); char[] arr = word.toCharArray(); int ans = arr.length; for(int i=0; i