반응형

전체 글 113

[프로그래머스]신규 아이디 추천[JAVA, 자바]

문제 설명 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다. 1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다. 2단계 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다. 3단계 new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다. 4단계 new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다...

[프로그래머스]크레인 인형뽑기 게임[JAVA, 자바]

문제 설명 생략 풀이 방법 스택을 이용한 문제이다. 먼저 board 배열을 탐색하여, 인형을 뽑는다. 뽑는 이용을 스택에 push하는데, 비어있을 경우 그냥 push, 아닐 경우 top이랑 비교해서 같으면 pop, 다르면 push 해준다. 정답에 x2를 한 이유는, pop한 개수가 아닌 없어진 인형의 개수이기 때문이다. 알아야되는 개념 스택 반복문 import java.util.*; class Solution { public int solution(int[][] board, int[] moves) { int answer = 0; Stack st = new Stack(); for (int i=0;i 0){ if(!st.empty()) { if(st.peek() == board[j][now]) { st.po..

[프로그래머스]모의고사[JAVA, 자바]

문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 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, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작..

[프로그래머스]k번째수[JAVA, 자바]

문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 풀이 방법 copyOfRange 메소드를 사용하면 간단하고 ..

[프로그래머스]완주하지 못한 선수[JAVA, 자바]

문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 풀이 방법 hashmap을 사용해서 풀면 되는 문제였다. 정렬 없이 일반적으로 배열이나 arraylist를 사용하면 시간 초과가 발생한다. 그래서 탐색속도가 빠른 hashmap을 사용해서 문제를 해결했다. JAVA에 익숙하지 않아서, getOrDefault, keySet과 같은 내부 메소드에 익숙하지 않아서 고생을 조금 했다. 알아야되는 개념 hashmap has..

[프로그래머스]두 개 뽑아서 더하기[JAVA, 자바]

문제 설명 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 풀이 방법 문제를 잘 읽어보면 중복 없는 오름차순의 배열을 return 하라는 문제이다. 2중 반복문을 통해 모든 수의 합을 더 해줌 -> 중복 없이 Arraylist에 add 해줌 -> 배열 생성 후 Arraylist 원소들을 넣어줌 -> 오름차순 정렬 초기 배열의 크기를 설정해주는 것이 어려움으로 Arraylist를 사용했다. 알아야되는 개념 Arraylist 정렬(Sort) 2중 반복문 import java.util.ArrayList; import java.util.Array..

상속(inheritance) [JAVA]

상속이란? 객체 지향의 상속(inheritance)은 한 클래스가 기존 클래스의 속성이나 기능(메소드)을 재사용(reuse)하면서 자신의 새로운 속성이나 기능을 추가해서 확장(extend)하거나 기존 기능을 정제하고 개선(refine)하는 구현 방식 부모 클래스 기존 클래스 자식 클래스 확장되거나 개선된 클래스 자식 클래스는 부모 클래스의 모든 속성과 함수들을 상속 받지만, 부모 클래스에서 자식 클래스가 접근할 수 있는 속성과 메소드를 지정 가능 부모 클래스는 한 개 이상의 자식 클래스와 관계를 맺는 계층 구조로 표현 가능 공통 부분을 부모 클래스에, 서로 다른 부분은 자식 클래스에 구현 가능 class Child extends Parent { } 상속은 클래스를 만드는 것과 비슷하게, 코드의 재사용성을..

CS/OOP 2021.03.15

인터페이스(Interface)와 추상 클래스(abstract class) [JAVA]

인터페이스(interface) 사전적 정의 "서로 다른 두 시스템, 장치, 소프트웨어 따위를 서로 이어 주는 부분. 또는 그런 접속 장치" - 표준국어대사전 자바의 인터페이스 함수를 미리 선언하고 구현은 비워놓은 추상 메소드 함수 선언을 지켜서 구현하라는 약속 인터페이스로 선언된 함수들은 다른 클래스에서 구현됨 인터페이스의 장점 두 가지 이미 구현된 것들을 교체하기 쉬움 다중 상속을 해야 하는 경우에 사용 가능 class 클래스이름 implement 인터페이스 이름 { // 인터페이스에서 선언된 함수 구현 코드 // 나머지 코드 } 인터페이스는 상속 관계의 부모 클래스와 유사하게 사용 가능 인터페이스를 구현하는 클래스 객체도 인터페이스 변수에 저장하거나 인자로 전달 가능 인터페이스는 부모 클래스인 것처럼..

CS/OOP 2021.03.15

클래스들의 관계[JAVA]

연관 (association) 두 클래스 사이가 연결됨 클래스 간에 참조가 사용됨 클래스의 멤버 변수로 다른 클래스가 저장됨 의존(dependency) 연관과 비슷하지만 참조를 사용하는 시기가 짧음 메소드 내부에서 다른 클래스 객체를 생성해서 사용 메소드에 인자로 다른 클래스 객체를 전달 받아 함수 내부에서 다른 클래스의 메소드 호출 메소드에서 다른 클래스 객체를 반환하고, 반환 받은 쪽에서 메소드를 호출 집합(aggregation) 두 개는 비슷하지만 전체와 부분의 생명 주기가 일치하는지로 구분 집합은 전체와 부분의 생명 주기가 다름 생성자나 메소드에 입력으로 다른 객체를 전달받아서 멤버 변수에 저장한다면 집합으로 보면 됨 구성(composition) 전체와 부분의 생명 주기가 일치 출처 - 상명대 객..

CS/OOP 2021.03.06

클래스(Class) [JAVA]

클래스 찾기 자바는 단순한 명령문을 실행하려고 해도 무조건 "클래스"를 구현해야 함 좋은 클래스란? 다른 프로그램에서도 사용할 수 있음 확장이 쉬움 고쳐 쓰기 쉬움 일관성과 결합성을 고려해야함 일관성: 클래스는 목적이 있어야 하고 그 목적에 부합해야 함 결합성: 클래스는 다른 클래스에 대한 의존이 적어야 함 일관성 클래스를 구성하는 요소들이 뭉쳐있는 정도 및 연관성을 의미 클래스의 목적을 이룰 수 있도록 관련된 데이터와 그 데이터를 처리하는 함수들만으로 구성 클래스가 어떤 자료(데이터)를 가지곻 있어야 하는지 먼저 생각 그럴 후에 그 자료를 처리하는 코드를 멤버 함수로 구현 결합성 결합은 클래스가 서로 연결되면서 발생 클래스 설계할 때에는 서로간의 결합성이 낮아야함 (loosely coupled) or ..

CS/OOP 2021.02.24
반응형