본문 바로가기

분류 전체보기

(190)
프로그래머스<콜라츠 추측> 문제 설명 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); 코딩테스트 문제를 ..
JAVA(2022.06.12) - LinkedList의 Node 보호되어 있는 글입니다.
프로그래머스 <프린터> 문제 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린터를 개발했습니다. 이 새롭게 개발한 프린터는 아래와 같은 방식으로 인쇄 작업을 수행합니다. 1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 2. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다. 3. 그렇지 않으면 J를 인쇄합니다. 예를 들어, 4개의 문서(A, B, C, D)가 순서대로 인쇄 대기목록에 있고 중요도가 2 1 3 2 라면 C D A B 순으로 인쇄하게 됩니다. 내가 인쇄를 요청한 문서가 몇 번째로 인쇄되는지 알고 ..