본문 바로가기

Java

Programmers K진법에서 소수 개수 구하기 java 쉬운 풀이^^ 1. 문제 설명문제 링크2. 접근 방식해당 문제는 문제에서 하라는 대로만 하면 된다.(1) 받은 숫자를 N진법으로 변환한다.문제를 풀던 당시에는 Integer.toString(n, radix) 라는 문법을 알지 못했다. 해당 문법은 n을 2번째 인자인 radix진법으로 변환해서 String으로 반환한다. Integer.toString(n,2)이면 n을 2진법으로 반환해서 String 값으로 반환하는 것이다.이 문법을 몰라서, 직접 반환했다.반환 방법은 다음과 같다.바꾸려는 수를 n, 진법을 radix라고 할 때, n%radix == 0 이 될 때까지 n을 radix로 나눈다.이때 나머지 값을 저장하고 있는다.드디어 n%radix == 0 이 되면 지금까지 나왔던 나머지들을 역순으로 줄 세운다.자세한 변환.. 더보기
[백준] 2667_단지번호 붙이기 java 쉬운 풀이! 1. 문제 설명문제 설명2. 접근 방식KEY WORD: BFS2차원 배열에 값을 담는다.번호 별로 의미가 있다. (0 = 벽, 1 = 미방문한 아파트 단지, 2 = 방문한 단지)(1) 2차원 배열을 순회하다가 값 == 1인 것을 만나면, 해당 값을 시작으로 BFS를 돌린다. 현재 값의 사방을 탐색한다. 사방의 값 중 1인 값이 있으면 큐에 넣고, 해당 위치의 값을 2로 바꾼다. 큐가 빌 때 까지 (더 이상 사방 탐색을 해도 값 = 1이 안 나올 때 까지) 반복한다.(2) 1번은 첫 조회에서 만난 아파트의 아파트 단지 전체를 한번에 보는 것이다. 따라서 1번의 반복 횟수가 곧 아파트의 개수이다.(3) 아파트 단지를 단지내 아파트의 개수에 따라 오름차순으로 정렬한다. 3. 코드 분석import java.i.. 더보기
이분 탐색 & Upper Bound, Lower Bound 개념 정리 1. Binary-Search란 무엇인가요?정렬된 배열 혹은 List 에서 탐색 구간을 절반씩 줄여가며 특정 값을 찾는 탐색법이다. 다음과 같이 진행 된다.(0) 기본적인 용어는 다음과 같다.target: 찾고자 하는 값, start : 왼쪽 포인터,(index=0에서 시작), end: 오른쪽 포인터(배열 끝에서 시작), mid: 두 값의 중간에 위치한 값(1) mid를 구하고 target 값과 대소관계를 비교한다.(2) mid > target 이면, mid 값이 target값으로 향하도록, end = mid-1 로 탐색 영역을 절반 줄인다.(3) mid target 이면, start = mid +1 이 되도록 하여, 탐색 영역을 절반 줄인다.(4) mid == target 이면 값을 구했으므로, 이분 .. 더보기
[프로그래머스] 광물 캐기 풀이 java 1. 문제 설명문제 링크2. 접근 방식KEY WORD: GREEDY Algorithm광물을 캐는 비용을 최소화 하기 위해서는, 돌 곡괭이로 캤을 때, 비용이 제일 많이 드는 구간이 앞에 오도록, 광물 리스트를 정렬하고, 구간들을 순회하며, 그때 그때 최선의 곡괭이로 일처리를 해야한다.그 의미에서 Greedy Algorithm을 써야 하는 것이다.광물의 크기가 50밖에 안됨으로 시간복잡도 관련해서 걱정할 것은 없을 것 같다. 그렇다면 해야할 일은,광물 List를 5개씩 자른다. 그것이 일의 단위이기 때문이다.(근데 광물이 5의 배수로 안 맞아 떨어질 수 있다. 그러면 맨 마지막은 3개나 4개가 하나의 묶음이 될 수도 있음으로 이를 주의해서 Loop를 짠다.)나눠진 광물 묶음을 돌 곡괭이로 작업했을 때 피로.. 더보기
[자료구조] 배열, List, Map, Stack, Queue, Priority Queue 1. Array(1) 정의번호와 번호에 대응되는 값들로 이루어진 자료구조를 의미한다.번호만 알고 있으면, 해당 번호에 해당하는 값을 O(1)에 조회가 가능하다.(2) 특징ⓐ Index에 해당하는 값에 바로 접근할 수 있다. (값 조회에 빠르다.)ⓑ 배열은 선언할 때, 그 크기가 정해진다. 그 이후, 줄이거나, 늘릴 수 없다.ⓒ 따라서 중간에 값을 삽입하거나 삭제하기가 어렵다.만약에 그러한 구현이 꼭 필요하다면, 빈 배열을 통해 변경사항이 반영된 배열을 새로 만들어야 한다.(3) 많이 쓰 함수ⓐ Arrays.asList(T..a): 배열을 ArrayList로 변환시켜준다.ⓑ Arrays.toString(): 배열을 문자열 형태로 변경해준다. 문자열 형태: [a,b,c,d...] → 출력할 때 많이 씀ⓒ A.. 더보기
[JAVA] 추상화와 추상화 클래스 1. 객체지향 언어에서 추상화란? (1)추상화 뜻 *미술에서의 추상화 뜻 실제 자연계에 존재하는 사물의 대략적인 특징들을 추출하여 점,선,면 으로 단순화하여 표현하는 것 *'추상화 하다.'의 뜻 알고는 있지만, 정확하게 설명하기 어려운 사물을 그것의 중요한 부분이나 특징을 중점 잡아 설명하는 것. *객체지향에서의 추상화 클래스를 만들 때 굳이 알 필요 없거나 불 필요한 부분을 숨기거나 지우고, 중요한 속성에만 중점을 두어 내용을 추려 만드는 것. 추상화에는 2 가지 종류가 있는데, 제어 추상화와 데이터 추상화 이다. (2) 제어 추상화 사용자가 매소드의 복잡한 부분은 몰라도 사용할 수 있게 만드는 것이다. 매소드의 로직 부분은 숨기고, 사용자가 직접 써야하는 파트만 남기는 것이다. 예를 들어 우리가 컴퓨.. 더보기
[JAVA QUIZ] 햄버거 주문서 만들기 package Chap_07; class Hambuger { // 인스턴스 변수 public String name; public String ingredient1; public String ingredient2; public String ingredient3; // 생성자 public Hambuger(){ this("햄버거"); } public Hambuger(String name){ this.name = name; this.ingredient1 = "양상추"; this.ingredient2 = "패티"; this.ingredient3 = "피클"; } // 매소드 public void cook() { System.out.println(name + "를 만듭니다."); System.out.println(.. 더보기
[JAVA]열거형 1.열거형 클래스 (enum class) 정의 요일: 월, 화, 수, 목, 금, 토, 일 달력: JAN, FEB, MAR, APR, MAY, JUNE .... 과 같이 서로 관련 있는 상수들을 모아놓고, 해당 상수들에 대해 정의한 클래스 *상수란? 열거형 클래스 안의 핵심이 되는 값을 이야기 하는 것이지, 꼭 숫자일 필요 없다. 정수, 실수, 문자열 모두 가능하다. 위의 예를 해당 정의에 따라 나누어보면, 클래스 이름: 요일 / 상수: 월, 화, 수, 목, 금, 토, 일 클래스 이름: 달력/ 상수: JAN, FEB, MAR, APR, MAY, JUNE .... 이다. 2. 문법적 특징 1. 열거된 상수들은 차례대로 0부터 시작하는 index를 가진다. 2. 상수들은 모두 대문자로 적어야한다. 3. 상수와.. 더보기