class Solution { public boolean isHappy(int a) { String n = Integer.toString(a); boolean isHappyNum = false; int sum = 0; char[] array = n.toCharArray(); for(int i = 0; i < array.length; i++){ int ans = Integer.parseInt(Character.toString(array[i])); sum += ans*ans; } int sum1 = 0; int j = 0; while(sum1 != 1){ String sumToStr = ""; if(j == 0){ sumToStr = Integer.toString(sum); } else{ sumToStr =..
제한시간이 있기 때문에 BufferedReader 로 입력받아야 한다. 카운팅 정렬을 알아야 한다. http://simsimjae.tistory.com/232 처음에 런타임에러가 났는데 다른 코드를 보다가 arr배열의 크기를 N으로 선언했었다. 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.rea..
Comparator인터페이스를 이용해서 compare 메소드를 오버라이딩하여 정렬했다. sort함수에 arr을 받고 Comparator를 생성해주면서 compare 메소드를 오버라이딩한다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int arr[][] = new int[n][2]; for(int i = 0; i < n; i++) { for(int j = 0; j < arr[i].length; j++) { arr[i][j] = sc.nextInt(); } } Arrays.sort(arr, new Comparator() { @Overri..
시간초과가 나지않게 푸는것이 핵심이다. 처음에는 Scanner로 입력받아서 계속 시간초과가 났었는데 BufferedReader로 받으니 시간초과가 나지 않았다. public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); ArrayList list = new ArrayList(); for(int i = 1; i
조건 카드를 N개 구매한다. 인덱스의 범위가 입력받은 N을 넘어서는 안된다 카드백에 들어있는 카드가 작은 것부터 산다. 구해야 할 것 arr에 입력받는다고 하면 arr을 더한 최대값을 구해야 한다. dp에 들어갈 값 각각의 최대값을 대입해서 넣어준다. import java.util.Scanner; public class Main { static long dp[]; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int dp[] = new int[n+1]; int arr[] = new int[n+1]; for(int i = 1; i
지금까지 다이나믹 프로그래밍 문제를 풀면서 파악한 것으로 배열은 입력받는 배열, 정답을 담을 dp배열 이렇게 두가지를 선언하고 dp배열에 최대값 또는 최소값 등 구하는 값을 넣어 마지막에 dp[n]을 출력하는 공통점이 있었다. 접근할 때 생각할 것들을 정리하면 구하는 값 - dp에 들어갈 값 즉, 그 문제의 정답 - 내 경우에는 dp배열에 들어가는 값이 무엇인지 문제를 풀면서 도중에 길을 잃을 때가 있었다. 입력받은 배열과 dp배열을 정확하게 구분하자 문제의 조건 - 조건을 정리하는 것은 문제를 이해하는 방법중 하나인데 때로는 조건을 놓쳐서 틀린 경우가 있었다. 문제 접근방법 타일채우기 등 타일의 모양에 따라 달라지는 방법의 수를 구하는 문제는 그림으로 접근 이친수 등의 문제는 케이스마다 표로 정리하면 ..
public class Main { static long dp[]; public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.next(); sc.close(); int length = str.length(); dp = new long[length + 1]; dp[0] = dp[1] = 1; if(str.charAt(0) == '0') System.out.println(0); else if(str.charAt(length-1) == '0' && str.charAt(length-2) != '1' && str.charAt(length-2) != '2') System.out.println(0); els..
점화식이 굉장히 쉬운 문제였는데 포스팅하는 것은 배열 선언에서 오류가 있어 많이 틀렸기 때문이다. 지금까지 java자료형에 대해 깊게 고민하지 않고 int로만 배열을 선언했는데 이렇게 하면 크기를 넘어서는 숫자에 대해서는 정확한 답을 구할수가 없다. 표현범위 short -32,768 ~ 32,768 int -2,147,483,648 ~ 2,147,483,647 long -9223372036854775808 ~ 9223372036854775807 Double -1.7E308 ~ 1.7E308 너무 범위가 큰 것 같으면 long으로 배열을 선언하자 public class Main { static long dp[]; public static void main(String[] args) { Scanner sc ..
- Total
- Today
- Yesterday
- 병행프로세스
- 퀵정렬
- 최단경로
- 배열
- 구조체
- 동적프로그래밍
- server side rendering
- 입출력장치
- 인접리스트
- dfs
- 소프트웨어
- 재귀함수
- client side rendering
- 세마포어
- 클래스
- javascript
- 자료구조
- BFS
- 인접행렬
- react
- Stack
- Java
- 이진탐색
- stackframe
- 운영체제
- C
- C++
- 스텍
- 교착상태
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |