본문 바로가기

algorithm64

[백준] 1780번 종이의 개수 1. Feedback brute-force 로 풀음. 시간복잡도 O(n 제곱) 2. Source package acmicpc; import java.util.Scanner; /** * @author lee * * 문제 : -1로만 채워진 종이 개수, 0으로만 채워진 종이 개수, +1으로만 채워진 종이 개수를 * 구한다. */ public class Num1780 { public static void main(String[] args) { Scanner in = new Scanner(System.in); int N = in.nextInt(); int board[][] = new int[N][N]; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { b.. 2020. 7. 10.
[HackerRank] Climbing the Leaderboard 1. Problem https://www.hackerrank.com/challenges/climbing-the-leaderboard/problem 2. Feedback 주어진 점수의 랭킹이 몇 등인지 구하는 문제 정렬되있다는 힌트를 보고 이진 검색을 생각했고, 랭킹을 구하기 위해 이진검색을 변형시켜서 풀었음. 순위를 매기는 작업은 시간복잡도 O(n) 이진검색은 n 을 1/2 씩 줄여나가니 logN 총 시간복잡도는 m개의 score 의 순위를 구하는 문제이니 O(n) + O(m*logm) min > max 인 부분을 체크를 못해서 시간 걸림. 3. Source import java.util.Scanner; public class ClimbingTheLeaderboard { public static void.. 2020. 7. 10.
[백준] 1110 더하기 사이클 문제 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다. 위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다. N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오. 입력 : 첫.. 2020. 7. 10.
[백준] 1008 a 나누기 b 문제 두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 A와 B가 주어진다. (0 < A, B < 10) 출력 첫째 줄에 A/B를 출력한다. 절대/상대 오차는 10-9 까지 허용한다. 예제 입력 1 1 3 예제 출력 1 0.33333333333333333333333333333333 문제풀이 소수가 나올 수 있기에 double 을 써서 풀음. 10-9 승 까지의 오차를 허용한다 했는데, 이 부분을 제어할거라 생각했는데 딱히 어떤 것을 안하네. 왜 문제를 풀지 못했는가? 어떤 부분을 생각하지 못했는가? Source public class Num1008 { public static void main(String [] args) { Scanner scan = new S.. 2020. 7. 10.