본문 바로가기

분류 전체보기

(192)
프로그래머스<정수 제곱근 판별> 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. 제한 사항 n은 1이상, 50000000000000 이하인 양의 정수입니다. 입출력 예nreturn 121 144 3 -1 입출력 예 설명 입출력 예#1 121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다. 입출력 예#2 3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다. class Solution { public long solution(long n) { long answer = 0; answer = (long)Math.sqrt(n); if(n == ..
프로그래머스<최대공약수와 최소공배수> 문제설명 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다. 제한 사항 두 수는 1이상 1000000이하의 자연수입니다. 입출력 예nmreturn 3 12 [3, 12] 2 5 [1, 10] 입출력 예 설명 입출력 예 #1 위의 설명과 같습니다. 입출력 예 #2 자연수 2와 5의 최대공약수는 1, 최소공배수는 10이므로 [1, 10]을 리턴해야 합니다. 내가 작성한 코드 class Solution { static int gcd(int n, int m)..
프로그래머스<콜라츠 추측> 문제 설명 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 예를 들어, 주어진 수가 6이라면 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야 하는지 반환하는 함수, solution을 완성해 주세요. 단, 주어진 수가 1인 경우에는 0을, 작업을 500번 반복할 때까지 1이 되지 않는다면 –1을 반환해 주세요. 제한 사항 입력..
JAVA(2022.06.17) - 문자열을 정렬하기 toCharArray() - 문자열을 char형 배열로 변환시켜준다 Arrays.sort() - 배열을 순서대로 정렬시킨다 new StringBuffer(new String(배열이름)).reverse().toString(); - 오름차순 된 배열을 역순으로 나열하여 내림차순이 되도록 하고, 마지막에 char형을 String으로 변경시켜준다 Arrays.sort(배열이름, String.CASE_INSENSITIVE_ORDER); - 대문자 소문자에 관계없이 알파벳 순서대로 정렬한다 JAVA에서는 String을 바로 정렬할 수 있는 방법이 없기 때문에 이와 같은 메소드를 활용하여야 한다
JAVA(2022.06.16) - Set 으로 집합 구현하기 이전 글에서 Set에 대해서 알아보았다. Set은 집합을 구현할 때 매우 유용하게 사용된다 ex1) 교집합 - retainAll(); //배열을 set으로 바꿔주는 과정 HashSet s1 = new HashSet(Arrays.asList(1,10,100,20,30); HashSet s2 = new HashSet(Arrays.asList(10, 20, 30, 40, 50, 60)); HashSet inter = new HashSet(s1); inter.retainAll(s2); ///10,20,30 인스턴스를 통해 retainAll 메소드를 사용한 이유는, 그렇지 않으면 s1의 값이 변경되기 때문이다 . ex2) 합집합 - addAll(); //배열을 set으로 바꿔주는 과정 HashSet s1 = ne..
JAVA(2022.06.15) - Set Set set은 중복 값을 삽입할 수 없다 HashSet 선언방법 //제네릭 이용 Set hs = new HashSet(); 순서대로 입력되지 않고 일정하게 유지되지 않는다 null값을 허용한다 중복이 허용되지 않는다 TreeSet 선언방법 TreeSet set = new TreeSet(); 크기를 지정해줄 수 없다 레드-블랙 트리(Red-Black Tree)로 구성되어있다 자동으로 정렬이 되며 Compartor을 통해 정렬된 순서를 조정할 수 있다 LinkedHashSet 선언방법 LinkedHashSet lhs = new LinkedHashSet(); 삽입된 순서를 기억한다 Set메소드 add() - 데이터 삽입 Set hs = new HashSet(); hs.add(1); hs.add(2); hs...
JAVA(2022.06.14) - Map Map 파이썬 딕셔너리와 같이 key값과 value값을 쌍으로 저장하는 자료형이다 key를 통해 value값을 구한다 종류 1.HashMap 순서를 보장하지 않고 데이터를 출력할 때 무작위로 출력된다 내부적으로 Entry 배열을 만든다 Hashcode를 사용하기 때문에 빠른 탐색시간을 갖는다 key와 value값에 null을 허용한다 2.TreeMap RedBlack Tree형식으로 구성되어있다 key값에 따라 정렬되어 자료가 출력된다 Comparator 인터페이스를 통해 정렬순서를 조절할 수 있다 value값에만 null을 허용한다 3.LinkedHashMap 입력된 순서를 기억하고 그 순서대로 자료가 출력된다 내부에 같은 key값을 가지고 있다면 중복을 허용하지 않고 value값이 update된다 k..
JAVA(2022.06.13) - Casting(형변환) 정수 > 문자 int a = 10; String A; 1번 A = String.valueOf(a); 2번 A = Integer.toString(a); 문자열 > 정수, 실수 String A = "1" //1번 int형, Double형, Float형, Long형으로 변환 int i = Integer.parseInt(A); int d = Double.parseDouble(A); int f = Float.parseFloat(A); int l = Long.parseLong(A); //2번 int형으로 변환 int I = Integer.valueOf(A); int D = Double.valueOf(A); int F = Float.valueOf(A); int L = Long.valueOf(A); 코딩테스트 문제를 ..