[코딩테스트 / Java] 개미수열
·
CodingTest/Java로 푼 코딩 테스트
모회사 코딩테스트 중 개미수열에 대해 알게되어 흥미가 생겨 정리해봤습니다 개미수열이란? 베르나르 베르베르의 소설 "개미"에 나왔던 수열 문제 입니다. 1 11 12 1121 122111 112213 12221131 [법칙] 1 => "1이 한 개" / 따라서 다음 열 => "11" 11 => "1이 두 개" / 따라서 다음 열 => "12" 12 => "1이 한 개, 2가 한 개 " / 따라서 다음 열 => "1121" 1121 => "1이 두 개, 2가 한 개, 1이 한 개" / 따라서 다음 열 => "122111" 122111 => "1이 한 개, 2가 두 개, 1이 세 개" / 따라서 다음 열 => "112213" 반복 정리하자면 한 열은 결과가 나오는 동시에 다음에 나올 열의 규칙이 된다. "숫자..
[Java] 컬렉션(Collection)
·
Language/Java
컬렉션(Collection) 데이터의 집합, 그룹 장점 일괄된 API : Collection의 일관된 API를 사용하여 Collection 밑에 있는 모든 클래스는 Collection에서 상속받아 통일된 메서드 사용 프로그래밍 노력 감소 : 객체 지향 프로그래밍의 추상화의 기본 개념이 성공적으로 구현 유용한 데이터 구조 및 알고리즘 성능 향상 List 순서가 있는 데이터의 집합으로 데이터의 중복을 허용한다. 종류 LinkedList 양방향 포인터 구조로 데이터의 삽입, 삭제가 빈번할 경우 데이터의 위치정보만 수정하면 되기에 유용 스택, 큐, 양방향 큐 등을 만들기 위한 용도로 쓰임 Stack 스택 클래스 모델 및 스택 데이터 구조를 구현할 때 주로 사용 후입선출을 기본 원칙으로 한다. Vector 동적 ..
[Java] 싱글톤 패턴(Singleton)
·
Language/Java
싱글톤 패턴 디자인 패턴의 종류 중 하나 클래스가 최초 한번만 메모리를 할당하고(static) 그 메모리에 인스턴스를 만들어서 사용하는 디자인 패턴 장점 고정된 메모리 영역을 얻으면서 한번은 new로 인스턴스를 사용하기 때문에 메모리 낭비를 방지할 수 있다. 싱글톤으로 만들어진 클래스의 인스턴스는 전역이기 때문에 다른 클래스의 인스턴스들이 데이터를 공유하기 쉽다. 인스턴스가 절대적으로 한 개만 존재하는 것을 보증할 수 있다. 두 번째 이용시 부터는 객체 로딩 시간이 줄어 성능이 좋아진다. 단점 싱글톤 인스턴스가 너무 많은 일을 하거나 많은 데이터를 공유시킬 경우에 다른 클래스의 인스턴스들 간에 결합도가 높아져 "개방-폐쇄 원칙" 위배 수정이 어려워지고 유지보수의 비용 증가 멀티쓰레드 환경에서 동기화 처리..
[Java] 추상 클래스 vs 인터페이스
·
Language/Java
추상클래스(abstract) 클래스를 설계도에 비유한다면 추상 클래스는 미완성 설계도에 비유할 수 있다 선언부만 작성하고 구현부는 작성하지 않은 채로 남겨 둔 것 abstract 지시자로 정의되며 추상메소드가 하나 이상 포함 abstract로 선언한 메소드는 자식 클래스에서 오버라이딩하여 반드시 구현해야 한다. Example 인터페이스(interface) interface 지시자로 정의하며 모든 메소드가 추상메소드로 정의 일반 메서드 또는 멤버 변수를 구성원으로 가질 수 없으며, 모든 멤버 변수는 public static final이다. 인터페이스는 인터페이스로부터만 상속받을 수 있으며, 클래스와 달리 다중상속을 받는 것이 가능하다. 추상클래스 vs 인터페이스 공통점 : 추상 메서드를 강제로 구현, 인스..
[Java] 객체 지향 프로그래밍(OOP)
·
Language/Java
꼬리의 꼬리를 무는 질문 1순위, 자바의 가장 큰 특징인 객체 지향 프로그래밍을 정리해보자! 1. 객체 지향 프로그래밍(OOP)란? 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법입니다. 1 - 1. 객체?? 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신과 다른 것을 식별가능한 것을 말합니다. 이러한 객체는 상태(state)와 행동(behavior) 혹은 속성과 동작으로 구성되어 있습니다. 객체지향 프로그래밍을 레고에 빗대 표현 할 수 있는데, 객체가 레고의 조각이 될 것이고 레고의 조각을 조립해서 무언가를 만드는 방식이 객체지향 프로그래밍이라고 할 수 있습니다. 1 - 2. 클래스?? ..
[2022 KAKAO BLIND RECRUITMENT / Java] 신고 결과 받기
·
CodingTest/Java로 푼 코딩 테스트
📍 생각대로 코딩 ArrayList, 단계를 나누어서 진행 유저 ID =>신고 List 중복제거 => 신고당한 카운트 세기 => 신고당한 횟수가 K번 이상이면 신고자 카운트 증가 import java.util.ArrayList; class Solution { public int[] solution(String[] id_list, String[] report, int k) { int[] answer = new int[id_list.length]; //이름 저장 List ArrayList name = new ArrayList(); for(String id : id_list){ name.add(id); } //신고 List 중복제거 ArrayList reports = new ArrayList(); for(St..
[Java] 자바(Java)란 무엇인가?
·
Language/Java
1. 자바란 무엇인가? 자바는 절차적 언어인 C언어에 객체 지향적 기능을 추가하여 만든 C++과는 달리, 처음부터 객체 지향 언어로 개발된 프로그래밍 언어입니다. 자바는 자바 가상 머신(JVM, Java Virtual Machine)을 사용하기 때문에, 운영체제와는 독립적으로 동작할 수 있습니다. 따라서 자바는 어느 운영체제에서나 같은 형태로 실행될 수 있습니다. 2. 자바의 역사 초기 : 임베디드 프로그램을 위한 언어로 썬 마이크로시스템즈(Sun Microsystems)사의 제임스 고슬링(James Gosling) 팀에 의해 개발 1991년에 오크(Oak)라는 이름으로 시작하여, 1996년에 발표된 1.0.2 버전부터 자바(Java)라는 이름을 사용 1998년 발표된 J2SE 1.2에서는 웹에서도 자바..
[백준 / Java]2920번 음계
·
CodingTest/Java로 푼 코딩 테스트
https://www.acmicpc.net/problem/2920 2920번: 음계 다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다. 1부터 8까지 차례대로 연주한다면 ascending, 8 www.acmicpc.net 첫번째 풀이(오름차순, 내림차순 배열 사용X) 정답인 배열을 생성하고 맞으면 출력하는 방식 import java.util.Scanner; public class Main { public static void main(String[] args) { int[] ascending = new int[] {1,2,3,4,5,6,7,8}; Boolean Isascen..