본문 바로가기

전체 카테고리361

[알고리즘] 프로그래머스-베스트앨범 1. 문제 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 plays가 주어질 때, 베스트 앨범에 들어갈 노래의 고유 번호를 순서대로 return 하도록 solution 함수를 완성하세요. 제한사항 genres[i]는 고유번호가 i인 노래의 장르입니다. plays[i]는 고유번호가 i인 노래가 재생된 횟수입니.. 2020. 6. 12.
[알고리즘] 프로그래머스-위장 1. 문제 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. 스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다. 스파이가 가진 의상의 수는 1개 이상 30개 이하입니다. 같은 이름을 가진 의상은 존재하지 않습니다. clothes의 모든 원소는 문자열로 이루어져 있습니다. 모든 문자열의 길이는 1 이상 20 이하인 .. 2020. 6. 12.
[Java] 객체 값 복사 - clone() 예제 1. clone() clone() 메소드는 자신을 복제하여 새로운 인스턴스를 생성하는 일을 합니다. 기존의 인스턴스의 값은 보존하고 새로운 인스턴스를 만들어서 이 인스턴스를 이용해서 작업을 진행하면 편리한 경우가 종종 있습니다. 예를들어서 파라미터로 값을 넘겨야하는데, 이 인스턴스의 멤버변수의 값을 변경해야할 경우 기존 인스턴스가 변경될때 다른 코드에 영향을 줄 수 있으므로 이때 clone()을 사용하면 좋을꺼 같습니다. 2. clone() 예제 코드 clone()은 모든 클래스의 부모인 Object 클래스에 정의되어있습니다. 여기에 정의된 clone()은 단순히 인스턴스 변수의 값만을 복하기 때문에 참조 타입의 인스턴스 변수가 있는 클래스는 완전한 복제가 이루어지지 않습니다. 따라서 복제된 참조타입의 .. 2020. 5. 31.
[Spring Boot] Swagger-UI 적용 오늘은 Swagger를 적용해서 API 문서 자동화를 하는 방법에 대해서 알아보겠습니다. 사이드 프로젝트를 진행하면서 프론트 개발자에게 API정의서를 만들어서 공유를 했었는데, 기존 API가 변경되면 API문서도 같이 변경을 해줘야하고, 실수할 확률도 어느정도 있었습니다. 그 와중에 Swagger-UI라는 것을 찾았고 이를 적용하여 API를 볼 수 있을 뿐만 아니라 API 호출까지 할 수 있었습니다. 아래 사진은 swagger로 API 문서화를한 예시입니다. 1. Swagger-UI란? 일반적인 동작, 패턴 및 일관된 UI로 RESTful API를 공유한다. API가 발전함에 따라 문서를 최신 상태유지한다. API 문서를 생성, 시각화 및 유지 관리가 편리하다. 문서화된 API에 대해 테스트 또한 가능하.. 2020. 5. 31.
[Java-source quality] Redundant Modifier 다음과 같은 인터페이스를 작성하고 commit을 하자 코드 퀄리티 툴에서 경고 메시지를 주었습니다. import org.springframework.web.multipart.MultipartFile; public interface IFileService { public String deleteFile(String filePath) throws RuntimeException; public String restore(MultipartFile multipartFile) throws RuntimeException; } Warning:(9, 5) Modifier 'public' is redundant for interface methods redundant는 불필요한의 뜻으로 인터페이스의 메소드를 위한 publi.. 2020. 5. 29.
[Clean Code] 객체와 자료구조 1. 객체와 자료의 비대칭 객체는 추상화 뒤로 자료를 숨긴채 자료를 다루는 함수만 공개합니다. 자료구조는 자료를 그대로 공개하며 별다른 함수는 제공하지 않습니다. 이를 보면 객체와 자료가 상반된다는 것을 알 수 있습니다. 절차적인 코드는 기존 자료 구조를 변경하지 않으면서 새 함수를 추가하기 쉽습니다. 반면에, 객체 지향 코드는 기존 함수를 변경하지 않으면서 새 클래스를 추가하기 쉽습니다. 반대로, 절차적인 코드는 새로운 자료구조를 추가하기 어렵습니다. 그러려면 모든 함수를 고쳐야하기 때문입니다. 객체 지향 코드는 새로운 함수를 추가하기 어렵습니다. 그러려면 모든 클래스를 고쳐야합니다. 복잡한 시스템을 짜다 보면 새로운 함수가 아니라 새로운 자료 타입이 필요한 경우가 생기는데 이때는 클래스와 객체 지향 .. 2020. 5. 15.