java
[Java] 인터페이스
인터페이스란? 만약 사람이 움직이는 것을 코드로 구현할 때, 사람은 걷기 뛰기 달리기 등 다양한 동작이 가능하다. 이러한 행동들을 필요할 때마다 추가를 한다면 코드를 작성하는 입장에서 굉장히 번거로울 것이다. 인터페이스를 사용하면 이러한 번거로움이 없어진다. 즉, 사람과 행동 사이에 중개자 역할을 담당하는 것이 인터페이스다. 그리고 행동에 필요한 틀을 선언해 놓아 구현을 강제한다. 장점 - 중개자를 통해 코드를 작성하기 때문에 동시 작업이 가능해진다. (만약 중개자가 없는 상태에서 동시개발을 진행한다면 추가로 변경해야 하는 부분이 생겨 꼬일 수 있다.) - 선언과 구현이 분리되어 있기 때문에 구현 부분을 수정해도 다른 클래스에 영향을 미치지 않는다. - 코드 변경 없이 다양한 실행 내용이나 결괏값을 구할..
[프로그래머스] 멀쩡한 사각형 (Java)
프로그래머스 Level 2 멀쩡한 사각형 (자바) 출처 https://programmers.co.kr/learn/courses/30/lessons/62048 코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 programmers.co.kr 문제 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 따라 1cm × 1cm의 정사각형으로 잘라 사용할 예정이었는데, 누군..
[Java] Object(toString(), equals(), hashCode())
Object가 모든 클래스의 조상 클래스는 사실을 사람들이 잘 모를 수 있다. 모든 클래스가 Object를 상속받고 있지만, 생략되어 있기 때문에 관련 내용을 보지 않았다면 알 수가 없다. 나 또한 처음에는 알지 못했다. 그래서 모든 객체는 Object의 메소드를 모두 호출해 사용할 수 있다. 총 11개의 메서드로 구성되어 있는데, 이 중 몇 가지를 살펴보고자 한다. toString() - 기본 동작 : 객체의 해시코드 출력(클래스명@16진수해시코드) equals() 메소드 다음으로 가장 많이 사용했던 메소드다. 나는 문자열이 아닌 변수를 문자열로 변환시킬 때 많이 사용했다. 그래서 당연히 문자열을 리턴하는 역할로 알고 있었지만 원형은 달랐다. 예시를 살펴보자. 아래와 같이 객체에 toString()을 ..
[Java] StringBuilder vs StringBuffer
Java로 코딩 테스트를 준비하다 보면 문자열 문제를 많이 마주한다. 이때, 기본 String을 사용하기도 하지만 StringBuilder와 StringBuffer를 사용하는 경우도 많다. 이 두가지에 대해 알아보도록 하자! String String과 2개 클래스의 차이를 보면 불변함의 차이가 있다. String : 불변(immutable) String 객체는 한 번 생성되면 할당된 메모리 공간이 변하지 않는다. 즉, +연산을 사용했을 때 기존의 문자열에 문자를 덧붙이는 것이 아니라 덧붙여진 새로운 String 객체를 만드는 것이다. 이것은 메모리 측면에서 굉장히 비효율적이다. 위와 반대로 간단하게 사용하거나, 동기화에 대해 신경쓰지 않아도 되는 경우에는 불변함이 장점이다. 자바에서 String은 Hea..
[TIL] Day 1
오늘(8월 2일)부터 그토록 고대하던 데브 코스를 시작했다. 교육과정 소개 중 눈길을 끌었던 것들이 많이 있었다. 그중 하나인 TIL을 오늘부터 작성해보려고 한다. 개인적으로 TIL은 꾸준함이 굉장히 중요하다고 생각하다. 지금은 이렇게 밤늦게라도 작성하지만, 나중에 나는 나태해질 수 있으니 이 글을 보고 정신 차려 12월까지 쭈욱 진행해나갔으면 좋겠다. TIL이란? Today I Learned의 약자로 오늘 내가 공부하거나 배운 것을 기록하는 용도다. 강의를 들으면서 나에게 부족하고 추가로 공부해야 할 필요성을 느낀 부분을 중점으로 적겠습니다. TIL 1. Build Tool 현재 사용하는 Framework가 나오기 전까지 개발자분들은 직접 코드를 빌드하고 실행시켰다고 한다. 이것은 매우 불편하고 귀찮은..
[Java] Solid란?
Solid를 쓰는 이유? 객체지향 설계가 더 쉬워지고, 유지보수와 확장도 쉬워짐 1. SRP(Single Responsibility Principle) : 단일 책임 원칙 "어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다." - 하나의 객체가 하나의 책임을 갖는 것 - 즉, 하나의 객체가 자신이 할 수 있는 것과 해야 하는 것만 수행할 수 있도록 설계되어야 한다! SRP를 지켜야 하는 이유 응집도와 결합도 관점에서 접근해야 한다. 응집도 - 한 프로그램 요소가 얼마나 뭉쳐있는가를 나타내는 척도. - 응집도가 높은 클래스는 하나의 책임에 집중하고, 독립성이 높아져 재사용이나 기능의 수정, 유지보수가 용이하다. 결합도 - 클래스 간의 상호 의존 정도. - 결합도가 낮으면 클래스간의 상호 의존성이 ..
[백준 15565] 귀여운 라이언 (자바)
백준 15565번 귀여운 라이언 (자바) 출처 www.acmicpc.net/problem/15565 15565번: 귀여운 라이언 꿀귀 라이언 인형과, 마찬가지로 꿀귀인 어피치 인형이 N개 일렬로 놓여 있다. 라이언 인형은 1, 어피치 인형은 2로 표현하자. 라이언 인형이 K개 이상 있는 가장 작은 연속된 인형들의 집합의 www.acmicpc.net 문제 꿀귀 라이언 인형과, 마찬가지로 꿀귀인 어피치 인형이 N개 일렬로 놓여 있다. 라이언 인형은 1, 어피치 인형은 2로 표현하자. 라이언 인형이 K개 이상 있는 가장 작은 연속된 인형들의 집합의 크기를 구하여라. 입력 첫 줄에 N과 K가 주어진다. (1 ≤ K ≤ N ≤ 10^6) 둘째 줄에 N개의 인형의 정보가 주어진다. (1 또는 2) 출력 K개 이상의..
[프로그래머스] (해시) 위장 (Java)
프로그래머스 Level 2 (해시) 위장 (자바) 출처 programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr 문제 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. 스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다. 스파이가..