분류 전체보기 381

[프로그래머스] 점프와 순간 이동 - Java

문제 설명 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방법 처음 해당 문제에 어떤 방법으로 접근해야할지 고민이 많았습니다. 그리디 → 백트래킹 → 메모이제이션 → 숫자 규칙 처음에는 그리디 알고리즘 느낌으로 순간 이동으로 최대한 많이 이동함으로써 배터리를 이용한 이동횟수를 최소화하고 나머지 이동 칸수에 대해서만 배터리를 이용하여 1칸씩 전진하는 방법을 취할려고 했었으나, 특정 경우의 수에선 순간 이동 중에 배터리를 사용하여 한 칸 전진한 후 다시 순간 이동하는 것이 최적의 해인 경우가 존재했기 때문에 그리디 알고리즘으로 구현하기는 다소 어렵겠다는..

[프로그래머스] 쿼드압축 후 개수 세기 - Java

문제 설명 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방법 해당 문제는 재귀 함수를 이용하여 해결할 수 있었습니다. 최초 정사각형 배열 arr이 주어질 때, 각 요소가 다음과 같다고 가정해보겠습니다. 현재의 배열에서는 1의 개수는 9개, 0의 개수는 7개로 압축이 불가능합니다. 따라서 행과 열을 절반씩 나눠서 4개의 영역으로 재탐색합니다. 1번, 3번, 4번 영역은 앞선 탐색과 마찬가지로 하나의 수로 일치하지 않아 압축이 불가능하여 다시 각 영역별로 행과 열을 절반씩 나눠서 4개의 영역으로 탐색해야합니다. 반면, 2번 영역은 0이라는 수로 일치하..

Java의 상속에 대해 파헤쳐보자!

상속이란? 상속은 객체지향 4대 특성 중 하나의 특성인데, 상속이란 기존의 클래스(상위 클래스)를 '재사용 및 확장'한 새로운 클래스(하위 클래스)를 작성하는 것이다. 여기서 '재사용'이라는 표현을 사용했는데, 이는 상위 클래스의 멤버(변수, 메서드)를 하위 클래스가 모두 상속받아 (재)사용할 수 있기 때문이다. 이때 상위 클래스의 생성자나 초기화 블럭은 상속되지 않는다. 만일 여러 클래스들이 있을 때 '공통되는 멤버'가 있다면 상속 관계를 적용할 수 있는지 생각해볼 법하다. 또한 '확장'이라는 표현을 사용했는데, 이는 하위 클래스가 상위 클래스로부터 상속받은 멤버에 더해서 추가적인 멤버를 작성할 수 있기 때문이다. (메서드를 오버라이딩함으로써 재정의할수도 있다.) 이때 새롭게 추가되는 멤버는 상위 클래..

Technology/Java 2022.08.27

Java final 키워드의 여러가지 쓰임새

final 키워드란? final이란 '마지막'이라는 뜻을 가지고 있는데, 실제 자바에서 쓰임새도 이 의미와 유사하게 사용된다. 이때 final 키워드가 사용될 수 있는 대상은 '클래스', '메서드', '변수' 세가지 뿐으로 각각의 경우에 대해 알아보자. 클래스에 사용되는 final 클래스에 final 키워드가 사용되면 해당 클래스는 상속받을 수 없게 된다. 대표적인 final class에는 java.lang 패키지에서 제공하는 String 클래스와 Math 클래스가 있다. public final class Math { // ... public final class String implements java.io.Serializable, Comparable, CharSequence { // ... 이러한 f..

Technology/Java 2022.08.26

[프로그래머스] 삼각 달팽이 - Java

문제 설명 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방법 해당 문제는 전형적인 배열 채우기 문제의 유형이었다고 생각합니다. 이 문제를 풀기 앞서 코드업의 '2차원 배열 달팽이 채우기'를 문제를 먼저 풀어본다면 많은 참고가 될 수 있습니다. [코드업 - 1484] 2차원 배열 달팽이 채우기 4-1 - Java 문제 설명 [기초-배열연습] 2차원 배열 달팽이 채우기 4-1 다음과 같은 n*m 배열 구조를 출력해보자. 입력이 3 4인 경우 다음과 같이 출력한다. 1 2 3 4 10 11 12 5 9 8 7 6 입력이 4 5인 경우는 다음과 같이 ik..