[프로그래머스] 거리두기 확인하기 - Java(자바)
·
자바/코딩테스트
문제 이해5X5 대기실이 5개가 있다.거리두기를 잘지켜지는지 확인해야한다.거리두기는 맨해튼 거리 2이하로 앉지 말아야 한다.응시자가 앉아 있는 자리 사이에 파티션으로 막혀있을 경우 맨해튼 거리 2이하도 허용된다.맨해튼 거리 2이하를 생각하였을때 P좌표에서 상하좌우를 총 2번 이내로 움직였을때 또다른 P가 있다면 맨해튼 거리 2이하다.해당 P1좌표가 갈수 있는 위치는 아래 표와 같다.P1좌표를 상하좌우 표시를 하고 P2좌표를 상하좌우 표시하면 중첩되는곳이 있다면 거리두기 실패이다.중첩을 찾아내기 위해 P좌표가 방문한곳은 visit 배열로 관리하였다.P1 갈 수 있음P1 갈 수 있음P1 갈 수 있음 P1 갈 수 있음P1  || P2 갈수 있음P1 갈 수 있음 P2 갈수 있음 P1 갈 수 있음P1 갈 수 있음..
[프로그래머스] 괄호 변환 -Java(자바)
·
자바/코딩테스트
1. 입력이 빈 문자열인 경우, 빈 문자열을 반환합니다. 2. 문자열 w를 두 "균형잡힌 괄호 문자열" u, v로 분리합니다. 단, u는 "균형잡힌 괄호 문자열"로 더 이상 분리할 수 없어야 하며, v는 빈 문자열이 될 수 있습니다. 3. 문자열 u가 "올바른 괄호 문자열" 이라면 문자열 v에 대해 1단계부터 다시 수행합니다. 3-1. 수행한 결과 문자열을 u에 이어 붙인 후 반환합니다. 4. 문자열 u가 "올바른 괄호 문자열"이 아니라면 아래 과정을 수행합니다. 4-1. 빈 문자열에 첫 번째 문자로 '('를 붙입니다. 4-2. 문자열 v에 대해 1단계부터 재귀적으로 수행한 결과 문자열을 이어 붙입니다. 4-3. ')'를 다시 붙입니다. 4-4. u의 첫 번째와 마지막 문자를 제거하고,..
[프로그래머스] [1차] 프렌즈4블록 - Java(자바)
·
자바/코딩테스트
문제 이해2x2 형식의 같은 그림이 나오면 해당 블럭은 터진다.라인별로 터지는게 아니라 곂치는게 존재해도 그 형태가 2x2라면 터지기 때문에 2x3 도 가능 하고 다양한 형태로 터지기 가능하다.한번 다 터지면 터진거 제외한 블럭이 내려오기 때문에 while 로 만들었고 터지는게 한개도 없다면 빠져 나오게 만들었다.블럭의 개수는 30x30 이하이기에 이중for문을 돌려서 해당 좌표의 우측, 아래, 우측 대각선 아래 의 세가지 값이 같다면 터져야할 블럭의 대상으로 check 배열에 true 변경하였다.터진 블럭을 제외하고 아래로 내려야 하기에 터트리고 값들을 stack에 담아 배열 끝부터 채워넣으면서 위와 같은 방식을 반복하게 만들었다.import java.util.*;class Solution { p..
[프로그래머스] 단어 변환 - Java(자바)
·
자바/코딩테스트
문제 이해 한번에 한 알파벳만 바꿀 수 있다. 한번에 문자열의 한 알파벳만 바꾸면서 words에 포함된 단어로 변경, target에 최소한의 과정으로 변환 가능한 숫자를 구하여라 한번에 한 알파벳만 바꿔서 words에 포함된 문자열을 구하는건 begin 문자열과 한개의 알파벳만 다르다는걸 의미한다. bfs 방법으로 최소한의 과정을 구하기로 했다. 큐와 방문자 배열을 생성하여 한개의 알파벳만 다른걸 구한다. words의 단어가 한개의 알파벳만 다르고 방문한적이 없다면 (여태까지 방문한 횟수 + 1 )을 방문자 배열에 집어 넣는다. import java.util.*; class Solution { public int solution(String begin, String target, String[] word..
[Java] 디폴트 메서드(Default Method) 란?
·
자바/개념
인터페이스를 구현하는 클래스에서는 메서드를 모두 구현해야하기 때문에 인터페이스에 메서드를 추가할때 문제가 발생한다. 메서드 하나를 추가하려면 해당 인터페이스를 구현하는 모든 클래스에서는 해당 메서드를 모두 구현해줘야 하는 것이다. Java8에서는 이러한 문제를 해결하기 위해 2가지 방법을 제공한다. 1.인터페이스 내부에 정적 메서드(static method)를 사용한다.(인스턴스 생성하지 않고 사용 ex) Math.abs ..) 2.인터페이스의 기본 구현을 제공할 수 있도록 디폴트 메서드(default method) 기능을 사용한다. 인터페이스에 default 메서드를 사용하여 메서드를 구현할 수 있다. default 메서드를 이용하면 인터페이스의 기존 구현을 그대로 상속하므로 인터페이스에 자유롭게 새로..
[Java] 함수형 인터페이스(Functional Interface) 란?
·
자바/개념
1) 개념함수형 인터페이스란 1 개의 추상 메소드를 갖는 인터페이스를 말한다.Java8 부터 인터페이스는 기본 구현체를 포함한 디폴트 메서드 (default method) , 정적 메서드(Static method) 를 포함할 수 있으며 여러 개의 디폴트 메서드가 있더라도 추상 메서드가 오직 하나라면 함수형 인터페이스다.자바의 람다 표현식은 함수형 인터페이스로만 사용 가능하다. 2) 함수형 인터페이스 만들기@FunctionalInterfacepublic interface functionalTest { void test(); static void firstTest(){ System.out.println("firstTest"); } default void secondT..
[프로그래머스] 삼각 달팽이 - Java(자바)
·
자바/코딩테스트
1 0 0 0 2 9 0 0 3 10 8 0 4 5 6 7 문제 이해 소용돌이 문제와 유사하다. 실제로는 2차원 배열로 넣었을때 위와 같은 모양을 띈다. x 증가 -> x의 끝 도달 -> y 증가 -> y의 끝 도달 -> x 감소 y 감소 이런식의 반복이 이루어진다. bfs 방식으로 방문했는지 안했는지를 값이 0이냐 아니냐로 비교하였다. 방문여부 || x, y 좌표의 위치에 따라 dir값 (0 - 왼쪽 대각선 아래, 1 - 오른쪽, 2 - 왼쪽 대각선 위) 세팅해준다. 배열의 총 개수는 순차수열로 생성하였고 배열의 개수만큼 num이 증가하면 while문을 나오게 만들었다. import java.util.*; class Solution { public int[] solution(int n) { int[][..
[프로그래머스] 무인도 여행 -Java(자바)
·
자바/코딩테스트
문제 이해 무인도 여행을 하려고 한다. 각 섬마다 며칠동안 머물수 있는지 문자열로 나와있다. 각 무인도마다 머무를 수 있는 일수가 나와있고 바다를 건너지 않고 상하좌우 움직여서 최대한 며칠을 버틸 수 있는지 구하여라 배열로 생성하여 오름차순 하여라 문자열을 반복하면서 X 즉 바다가 아닌 무인도를 발견하고 visit 배열에 방문했는지 기록한다. 발견한 무인도의 상하좌우의 무인도가 방문했던 무인도인지 확인 후 방문하지 않았으면 큐에 해당 좌표를 넣고 visit 배열에 방문했다고 변경한다. 위 처럼 처음 발견된 무인도를 기준으로 더이상 발견되지 않을때까지 반복하면서 큐에 좌표를 넣고 최대 일수를 계속 더한다. 더이상 무인도가 발견되지 않으면 바다를 건너야하는 상황임으로 list에 최대 일수를 저장한다. imp..
[프로그래머스] 하노이의 탑 - Java(자바)
·
자바/코딩테스트
문제 이해 하노이의 탑은 재귀함수 대표 문제이다. 하노이탑의 핵심은 크기가 N인 원반을 시작 점에서 목표 점으로 옮기기 위해서는, 크기가 N-1인 원반을 보조 점으로 먼저 옮기는 것이다. from -> other 로 옮기고 other -> to로 이동하는 재귀함수로 반복하여 리스트에 담으면 된다. import java.util.*; class Solution { static List list = new ArrayList(); public int[][] solution(int n) { hanoi(n,1,3,2); int[][] answer = new int[list.size()][2]; for(int i = 0; i
[프로그래머스] 정수 삼각형 - Java(자바)
·
자바/코딩테스트
문제 이해 삼각형의 꼭대기에서 바닥까지 이어오는 경로중 숫자의 합이 가장 큰 경우를 찾아라 이 문제의 경우 이어지는 경로라고 되어있다. 아래로 내려갈때 대각선 방향의 왼쪽 오른쪽으로만 이동 가능하다. DP로 문제를 해결하고자 했다. 문제와는 다르게 반대로 아래에서 위로 왼쪽 오른쪽을 각자 더했을때 더 큰 숫자를 배열에 남기기로 했다. 아래에서 위로 비교할때 index가 0보다 작을 경우를 체크하면서 값을 채워나가게 했다. import java.util.*; class Solution { public int solution(int[][] triangle) { int answer = 0; int[][] dp = new int[triangle.length+1][triangle.length]; for(int i..
컴파일(compile)와 인터프리터(interpreter)는 무엇일까?
·
자바/개념
컴파일 컴파일 특징컴파일 프로그램을 이용하여 컴파일한다.실행 파일이 만들어진다.실행 파일을 실행시킨다.속도가 빠르다.C++, C, 자바 등이 있다.A 운영체제에서 만든 프로그램을 B 운영처제에서 돌릴 경우, 돌아가지 않을 가능성이 아주 크다(ex int값이 달라지는 경우)모든 코드를 한번에 번역(컴파일)하고, 한번에 실행한다. 그래서 번역과 실행이 따로 이루어진다.컴파일 장점초기 스캔은 오래걸리지만, 한번 스캔을 마치면 실행파일을 만들어 놓고 계속 사용하기 때문에 실행속도는 인터프리터보다 빠르다.컴파일러는 오류 메시지를 생성할때 전체 코드를 검사한 후에 오류 메시지를 생성한다. 그래서 프로그램 실행 전에 오류를 발견 할 수 있다.컴파일 단점프로그램을 실행하는데 필요한 모든 파일을 스캔하기 때문에 초기 스..
JIT(JUST IN TIME) 란?
·
자바/개념
자바는 .java 파일을 컴파일 하여 .class의 바이트코드를 만든다. JVM은 바이트코드를 JIT, 인터프리터 방식을 통해 바이트 코드를 네이티브 코드로 변경해서 운영체제에게 넘겨 코드를 실행시킨다.개념 JIT 컴파일(just-in-time compilation) 또는 동적 번역(dynamic translation)은 프로그램을 실제 실행하는 시점에 기계어로 번역하는 컴파일 기법이다. 전통적인 입장에서 컴퓨터 프로그램을 만드는 방법은 두 가지가 있는데, 인터프리트 방식과 정적 컴파일 방식으로 나눌 수 있다. 이 중 인터프리트 방식은 실행 중 프로그래밍 언어를 읽어가면서 해당 기능에 대응하는 기계어 코드를 실행하며, 반면 정적 컴파일은 실행하기 전에 프로그램 코드를 기계어로 번역한다. JIT 컴파일러는..
대전집주인
'분류 전체보기' 카테고리의 글 목록 (2 Page)