[JAVA] 중복 제거 방법(+정렬)
·
🎯 Programming
코딩테스트 공부를 하다 보면 원소들의 중복을 허용하지 않는 문제를 자주 접하게 됩니다.이를 해결하기 위해 흔히 사용하는 두 가지 중복 제거 방법을 정리해 보았습니다.추가로, 중복 제거 후 정렬하는 방법에 대해서도 살짝 적어보았습니다 🤗 1️⃣ distinct() 사용int[]arr = new int[n];arr[0] =3; arr[1]=2;// 중복 제거int[] arr2 = Arrays.stream(arr).distinct().toArray(); Arrays.sort(arr2); sort 함수는 기본적으로 오름차순입니다.내림차순 정렬하고 싶으면 `Collections.reverseOrder()` 를 사용하면 됩니다. 근데 `Collections.reverseOrder()`으로 정렬할 배열은 프리미티브..
[프로그래머스] 모의고사 (JAVA)
·
💪 Algorithm
링크https://school.programmers.co.kr/learn/courses/30/lessons/42840 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 요약수포자 3명이 주어진 패턴으로 정답을 찍고, 정답 리스트 answers가 주어졌을 때 가장 정답을 많이 맞힌 사람을 반환하는 문제입니다.1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5,...2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5,...3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1..
[프로그래머스] 두 개 뽑아서 더하기 (JAVA)
·
💪 Algorithm
링크https://school.programmers.co.kr/learn/courses/30/lessons/68644?language=java 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 요약정수 배열 numbers에 대해 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 오름차순으로 정렬한다.이때, 중복을 허용하지 않는다. 제한numbers의 길이는 2 이상 100 이하입니다.numbers의 모든 수는 0 이상 100 이하입니다. 풀이numbers의 길이가 100 이하로, 작은 값이므로 시간 복잡도가 커도 상관없습니다.numbers에서 만들 수 있는 두 개의 수 합을 모두 찾는다.이를 중복 ..
[Github Action] build 오류 원인 더 자세히 보는 법
·
🎯 Programming
🚨 문제 상황WeproApplicationTests > contextLoads() FAILED java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:180 Caused by: org.springframework.jdbc.UncategorizedSQLException at JdbcTemplate.java:1549 Caused by: java.sql.BatchUpdateException at SQLError.java:223 Caused by: java.sql.SQLException at SQLError.java:130github action에서 workfl..
[ISSUE] boolean에서 is가 생략되는 문제
·
🎯 Programming
🚨 문제 상황로그인 기능을 구현하다가 만난 이슈입니다. 기존 소셜 로그인 응답값은 아래와 같았습니다.소셜 로그인 후, 회원가입 시 추가 정보를 받기 위해 새로운 유저인지 여부를 `isNewMember` 필드를 통해 표시해주고 있었어요.@Getter@AllArgsConstructor@NoArgsConstructorpublic static class SignInResponse { private boolean isNewMember; private TokenInfo tokenInfo;} 그런데 웹 창으로 로그인을 완료한 후, 나온 응답값을 보면 2가지 문제점을 발견할 수 있었습니다.{ "tokenInfo": { ... }, "newMember": false,} (1) `isNewMember`가 ..
인터페이스(Interface) vs 추상 클래스(Abstract class)
·
🎯 Programming
✅ 인터페이스(Interface) 특징서브 클래스는 인터페이스를 상속받았다는 의미는 이를 '구현'하는 것입니다.어떤 클래스에게 특정 책임을 부여하고 싶을 때 사용합니다. 인터페이스는 구현할 메서드의 집합을 선언한 것이다.인터페이스 내부 함수에 명시적으로 abstract을 표시하지 않아도 항상 abstract이다.인터페이스를 상속받은 클래스는 abstract 메서드를 반드시 구현해야 한다.인터페이스끼리 상속이 가능하다.인터페이스 접근자는 Public 만 가능하다.인터페이스 내부 함수의 접근자도 Public만 가능하다.인터페이스는 내부 변수 선언이 불가능하다. (static final 상수만 가능하다)인터페이스는 다중 구현이 가능하다.인터페이스 내부 함수는 abstract 함수만 가능하다. (그런데 Java..
디자인 패턴(Design Pattern)이란?
·
⚙️ CS
✅ 디자인 패턴의 정의디자인 패턴이란 자주 발생하는 설계 상의 문제를 해결하기 위한 반복적인 해법입니다. GoF의 정의에 의하면, 일반적인 설계문제를 해결하기 위하여 짜인 상호 협력하는 객체들과 클래스들에 대한 기술입니다.즉, 디자인 패턴은 UML을 일일이 그리지 않아도 특정 코드 전체를 설명할 수 있는 단어를 의미합니다.중요한 것은 디자인 패턴의 이름만 보고 패턴을 연상할 수 있어야 합니다. 예를 들어, 디자인 패턴을 사용하지 않고 팀원들끼리 소통한다면 특정 문제를 해결하기 위해 다음과 같이 말해야 합니다."이러한 메서드를 가진 클래스를 만들고, 이 클래스를 상속하는 서브 클래스를 만들어서... " 문장이 길어지며 서로 이해하기도 어려울 것입니다. 디자인 패턴을 사용한다면, 위 문장을 간단한 한 마디로..
SOLID 원칙
·
🎯 Programming
✅ SOLID 원칙이란?객체지향 설계에서 지켜야 할 5개의 소프트웨어 개발 원칙으로 SRP, OCP, LSP, ISP, DIP의 앞글자를 따서 만들어졌습니다.잘 설계되었는지 평가하는 데에 도움이 되는 설계 원칙입니다.SRP: Single Responsibility Principle, 단일 책임의 원칙OCP: Open Closed Principle, 개방 폐쇄의 원칙LSP: Liskov Substitution Principle, 리스코프 치환의 원칙ISP: Interface Segregation Principle, 인터페이스 분리의 원칙DIP: Dependency Inversion Principle, 의존 역전의 원칙 🏷 나쁜 설계의 특징경직성(Shotgun): 하나를 고치면 마치 도미노처럼 영향이 퍼..