본문 바로가기

CS5

[Programmers/Java] 베스트앨범 문제링크 => 베스트앨범 풀이. 1. unsortedGenreMap : 장르별 합계를 위해 HashMap 를 선언함. 2. reverseSortedGenreMap : 1의 HashMap을 value값인 총재생수의 내림차순으로 정렬함. 3. reverseSortedGenreMap을 순회 (1) unsortedPlayMap : HashMap 를 선언함 (2) reverseSortedPlayMap : (1)의 HashMap을 value값인 노래 재생수의 내림차순으로 정렬함. (3) reverseSortedPlayMap 중 2개씩만 정답 배열에 삽입 import java.util.*; class Solution { public int[] solution(String[] genres, int[] plays) { .. 2022. 11. 8.
[Programmers/Java] 자연수 뒤집어 배열로 만들기 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 제한 조건 n은 10,000,000,000이하인 자연수입니다. 입출력 예 12345 [5,4,3,2,1] class Solution { public int[] solution(long n) { // 방법1. 전통방법 long num = n; int cnt = 0; while(num != 0){ num /= 10; cnt++; } int[] answer = new int[cnt]; num = n; for(int i=0; num!=0; i++){ answer[i] = (int)(num % 10); num /= 10; } // 방법2. 정수를 문자열로 바꾸기 String.. 2022. 11. 4.
프로토타입 (Prototype) 패턴 정의 기존 인스턴스를 복제하여 새로운 인스턴스를 만드는 방법 자신을 복제 (clone) 프로토타입 패턴을 사용하는 이유 기존 객체를 응용해서 새로운 객체를 만들때 예를 들어, 데이터베이스에서 데이터를 읽어와서 인스턴스를 생성하거나 네트워크를 거쳐서 http 요청을 보내서 가져온 데이터 기반으로 인스턴스를 만드는 경우 ⇒ 인스턴스를 만들때마다 오래걸리고, 자원도 많이 사용하게 되는 경우 java의 clone 메소드를 알아보자. 기본적으로 java에서 지원하는 clone 메소드는 ‘얕은 복사 (shallow copy)’ 를 지원함. 얕은 복사 (shallow copy) 란 ? 주소 값을 복사함. 깊은 복사 (deep copy) 란 ? 실제 값을 새로운 메모리 공간에 복사함. 장점 복잡한 객체 생성 과정을 c.. 2022. 5. 22.
메멘토 (Memento) 패턴 정의 ? 캡슐화를 유지하면서 객체 내부 상태를 외부에 저장하는 방법. Originator : 원래의 데이터를 가진 객체. CareTaker : Originator의 내부정보를 Memento라는 타입으로 가지고 와서 저장하고 있음. Memento : Originator 객체의 추상화 객체. 따라서 Originator는 두 가지의 operation을 제공해야함. createMemento() : 내부정보를 Memento 클래스로 추상화해서 전달함. restore(Memento) : 외부에서 전달받은 Memento 정보로 자신의 정보를 복원함. 또한, Memento 는 변경불가능한 객체로 구성하여 Originator의 정보를 CareTaker에 전달함. 예제 /* Memento.class * 객체의 값이 변경되.. 2022. 5. 22.
싱글톤 (Singleton) 패턴 구현 private 생성자와 static 메소드를 이용한 방법 단점 → 멀티 스레드 환경에서 동시에 여러 스레드가 들어왔을때 동시에 new 키워드를 통해 서로 다른 인스턴스를 생성할 수 있다. synchronized 키워드 사용하는 방법 : static 메소드를 synchronized static 메소드로 변경하는 방법 public class Settings { private static Settings instance; private Settings(){ } public static synchronized Settings getInstance(){ if(instance == null){ instance = new Settings(); } return instance; } } 장점 → 동시에 여러 스레드.. 2022. 5. 22.