문제 https://programmers.co.kr/learn/courses/30/lessons/64061 풀이 import java.util.ArrayDeque; import java.util.Deque; class Algorithm220209 { public static int solution(int[][] board, int[] moves) { // 게임 화면 확인 for (int[] ar : board) { for (int n : ar) { System.out.print(n + " "); } System.out.println(); } // 바구니 Deque basket = new ArrayDeque(); basket.addLast(0); // 첫번째 값 임의로 저장 // 크레인 작동 int cnt..
전체 글
Optional 클래스 Optional클래스는 T타입의 객체를 포장해주는 일종의 래퍼 클래스이다. Optional 클래스는 if~else 구문을 대신할 수 있다. 조건에 따른 코드의 흐름이 나눠지는 것을 막을 수 있어 코드를 더 깔끔하게 구성할 수 있다. Optional 객체를 사용하면 예상치 못한 NullPointerException 예외를 단순하게 처리할 수 있다. 즉, 복잡한 조건문 없이도 null값으로 인해 발생하는 예외를 처리할 수 있게 된다. 💡 NullpointerException 예외 처리 클래스를 정의할 때 인스턴스 변수는 null이 되지 않게 유효한 값을 가지고 있도록 초기화 해주는 것이 좋지만, null을 허용해야 하는 경우도 있다. 이때 null 가능성에 대비하는 코드의 작성은 번거..
문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PobmqAPoDFAUq SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 import java.util.Scanner; class Algorithm220207 { public static void snail(int n) { int[][] arr = new int[n][n]; int[] dr = { 0, 1, 0, -1 }; // 행 변화값 (우 하 좌 상) int[] dc = { 1, 0, -1, 0 }; // 열 변화값 (우 하 좌 상) int[] dd = ..
메소드 참조 메소드 참조는 람다식으로 줄어든 코드의 양을 조금 더 줄일 수 있게 한다. 따라서 메소드 참조가 유용한 상황에서는 람다식이 아닌 메소드 참조를 사용해 해결 할 수 있다. 메소드 참조의 유형은 다음과 같이 4가지로 정리할 수 있다. static 메소드 참조 참조변수를 통한 인스턴스 메소드 참조 클래스 이름을 통한 인스턴스 메소드 참조 생성자 참조 static 메소드 참조 자바 8부터 이미 정의되어 있는 메소드를 사용할 때 람다식을 작성할 필요 없이 메소드 정보만 전달할 수 있다. 대입연산자 오른편에 메소드에 대한 정보만 전달되면 전달된 인자를 그대로 넘겨주면서 해당 메소드를 호출하라는 의미이다. 클래스 이름 :: static 메소드 이름 Consumer c = l -> Collections.r..
자바에서 표준으로 정의하고 있는 함수형 인터페이스들에 대해 알아보자. 기본 함수형 인터페이스 함수형 인터페이스 추상 메소드 설명 Predicate boolean test(T t) 전달 인자를 근거로 참/거짓 반환 Supplier T get() 메소드 호출시 무언가를 반환 Consumer void accept(T t) 인자를 받아들이기만 함 Funtion R apply(T t) 입력/출력이 있음 (수학적으론 함수) * java.util.funtion 패키지에 정의되어 있음 Predicate 전달된 인자를 판단하여 true 또는 false를 반환해야 하는 상황에 사용할 수 있다. @FuntionalInterface public interface Predicate { boolean test(T t); } 더보..
문제 https://programmers.co.kr/learn/courses/30/lessons/12947?language=java 코딩테스트 연습 - 하샤드 수 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하 programmers.co.kr 풀이 import java.util.Scanner; class Algorithm220129__2 { /* 풀이 */ public static boolean solution(int x) { // 각 자릿수 더하기 String s = String.valueOf(x); String[] arr = s.split(..
문제 https://programmers.co.kr/learn/courses/30/lessons/68644?language=java 코딩테스트 연습 - 두 개 뽑아서 더하기 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한 programmers.co.kr 풀이 import java.util.Arrays; import java.util.HashSet; import java.util.Set; class Algorithm220129__1 { /* 풀이 */ public static int[] solution(int[] numbers) { S..
문제 https://programmers.co.kr/learn/courses/30/lessons/12935 코딩테스트 연습 - 제일 작은 수 제거하기 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1 programmers.co.kr 풀이 import java.util.*; class Algorithm220128 { /* 풀이 */ public static int[] solution(int[] arr) { /* 방법2 */ //int min = 0; // 가장 작은 수의 인덱스 값 //for (int i = 1; i < arr.length..