목록분류 전체보기 (44)
지극히 개인적인 개발블로그
문제 풀이: c++에선 벡터를 많이 썻다면 자바에서는 ArrayList를 많이 쓴느 것 같네요. 그 사용방법을 한번 익혀봤습니다. import java.util.*; public class Sol_2750 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); ArrayList list = new ArrayList(); for(int i=0; i
풀이: 복잡하게 생각할거 없이 숫자를 가장 작은 종말수인 666부터 시작해서 1씩 증가시키면 됩니다. 그러면 자연스럽게 1666, 2666, 3666, 46666, 5666, 6661, 6662... 순서대로 종말수를 찾을수 있게 됩니다. import java.util.Scanner; public class Sol_1436 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int num=666; while(n > 0){ num++; String str = Integer.toString(num); if(str.contains("666")) n--; } System.out.pr..
풀이: 문제의 분류가 브루트 포스인만큼 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
일반적인 소수 구하는 방식을 사용했다가는 시간 초과가 뜬다. 시간복잡도가 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..
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
우선 규칙을 찾아야 합니다. 방(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