알고리즘
-
[hackerRank] primChecker알고리즘 2021. 2. 28. 19:48
문제 www.hackerrank.com/challenges/prime-checker/problem 접근방법 - 소수를 판별해 내는 문제이다 - 1보다 크고, 1과 자신외의 약수를 가지지 않는 수 ex) 2,3,5,7.. - 사람들이 푼걸 보니, BigInteger.valueOf(number).isProbablePrime() 을 많이 쓰기도 하는것 같다 . package com.cm; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.lang.reflect.Method; import java.util.HashSet; import java.util.Set; /** * ht..
-
[hackerRank] JavaComparator알고리즘 2021. 2. 25. 22:27
문제 www.hackerrank.com/challenges/java-comparator/problem 접근방법 - 점수 내림차순 + 동점시 이름 알파벳순으로 구현하면됨 - 단순 기본 정렬이라면, compareable을 사용해도되지만, 위와 같은 복합적인 조건이라면 comparetor를 구현하면 된다 package com.cm; import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; /** * https://www.hackerrank.com/challenges/java-comparator/problem */ public class JavaComparator { class Checker implements Comparat..
-
[hackerRank] JAVA Stack알고리즘 2020. 10. 26. 23:19
문제 www.hackerrank.com/challenges/java-stack/problem 접근방법 - 괄호의 짝이 맞으면 되는 문제 - stack의 pop을 이해한다면 충분히 쉬운 문제 - 좀 더 코드를 줄여보자면 push하는 부분을 else로 빼서하는 것도 코드를 줄일 수 있음 개인적으로 push하는 부분을 '(', '{', '[' 를 명확하게 써주는게 더좋은거 같아서 코드를 풀어서 씀 코드 package com.cm; import java.util.Scanner; import java.util.Stack; /** * https://www.hackerrank.com/challenges/java-stack/problem */ public class JavaStack { public JavaStack(..
-
[hackerRank] StringReverse알고리즘 2020. 10. 6. 23:40
문제 www.hackerrank.com/challenges/java-string-reverse/ 접근방법 쉽게 생각하면, 아주 쉽게 풀수 있는 문제였음, (2가지 방식으로 풀었다.) 입력받은 문자열을 뒤집어서 입력한 문자열과 같은지만 체크하면 되는 문제. solution1의 경우 StringBuilder 클래스의 reverse()메소드를 이용하면 쉽게 뒤집을수 있다. 하지만 solution1의 문제점은 최적화된 코드는 아니라는 것. 왜냐하면, 가장 처음 문자와, 가장 끝에 있는 문자가 다르다면 굳이 전부 뒤집을 필요는 없음. 그래서 solution2에서는 맨앞, 맨뒤를 각각 비교하다 중간에 다르면 바로 비교를 종료시켰다. 채점 속도도 solution2가 solution1에 비해 훨씬 빨랐다. 코드 imp..
-
[hackerRank] datatypes알고리즘 2020. 9. 29. 18:02
문제https://www.hackerrank.com/challenges/java-datatypes 접근방법- 각 자료형의 최소값, 최대값을 자바에서 지원해 주기 때문에, 자료형의 크기 순서만 안다면 조건문으로 쉽게 처리 가능. 코드package com.cm; import java.util.Scanner; /** * https://www.hackerrank.com/challenges/java-datatypes */ public class JavaType { public JavaType() { solution(); } public void solution(){ Scanner sc = new Scanner(System.in); int t = sc.nextInt(); // 반복 입력 할 횟수 for(int i ..
-
[hackerRank] AppleAndOrange알고리즘 2019. 12. 17. 22:48
접근방법 집의 시작점과 끝점 사이에 각각의 사과나무와 오렌지 나무의 과일이 집 사이에 있는 걸 체크. package com.cm; /** * https://www.hackerrank.com/challenges/apple-and-orange/problem?h_r=profile */ public class AppleAndOrange { public AppleAndOrange() { int s = 7; // 집 시작점 int t = 11; // 집 끝점 int a = 5; //사과나무 int b = 15; // 오렌지나무 int[] apples ={-2,2,1}; int[] oranges ={5,-6}; solution(s,t,a,b,apples,oranges); } public void solution (i..
-
[hackerRank] AngryProfessor알고리즘 2019. 12. 17. 22:45
접근방법 너무 쉬워서 접근 방법이이랄 것도 없었다.. 준비된 학생수만 세주면 끝.. package com.cm; /** * https://www.hackerrank.com/challenges/angry-professor/problem?h_r=profile */ public class AngryProfessor { public AngryProfessor() { int k = 2 ; int[] a = {0,-1,2,1}; System.out.println(solution(k,a)); } public String solution(int k, int[] a){ int readyStudentCount = 0; for(int i : a){ if(i=
-
[hackerRank] DiagonalDifference알고리즘 2019. 12. 10. 00:34
문제https://www.hackerrank.com/challenges/diagonal-difference/problem 문제요약 ex) a b c d e f g f i 절대값 ( (a+e+i) - (c+e+g) ) 을 출력! 접근방법 1. 좌측 대각선 (0,0) , (1,1), (2,2)2. 우측 대각선 (0,2), (1,1), (2,0)3. 즉 좌측대각선은 (x,y) y값 증가한다4. 우측대각선은 (x,y) y값 감소한다5. for문 0번째 인덱스부터 x값과 y값을 각각 증가 ,감소를 하여 변수에 담아서 계산함 package com.cm; import java.util.ArrayList; import java.util.List; /** * https://www.hackerrank.com/challen..