본문 바로가기

전체 글

(225)
프로그래머스 1844: 게임 맵 최단거리 [JAVA] https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr [난이도]- level 2 [알고리즘]- BFS [코드]import java.util.*;class Solution { static int answer = -1; // 우측하단에 도착하지못할경우 -1출력 public int solution(int[][] maps) { bfs(maps); return answer; } static void bf..
[이펙티브 자바] 아이템 51. 메서드 시그니처를 신중히 설계하라 메서드 이름을 신중히 짓자.표준 명명 규칙을 따라야 한다. 이해할 수 있고, 일관되게 지어야 한다.편의 메서드를 너무 많이 만들지 말자.메서드가 너무 많은 클래스는 익히고, 사용하고 문서화하고, 테스트하고, 유지보수하기 어렵다.매개변수 목록은 짧게 유지하자.4개 이하가 좋다. 4개가 넘어가면 기억하기 쉽지 않다. 같은 타입의 매개변수 여러 개가 연달아 나오는 경우가 특히 해롭다.매개변수의 타입으로는 클래스보다는 인터페이스가 더 낫다.매개변수로 적합한 인터페이스가 있다면 그 인터페이스를 직접 사용하자. 예를 들어 메서드에 HashMap을 넘길 일은 전혀 없다면 Map을 사용하자.boolean보다는 원소 2개 짜리 열거 타입이 낫다.열거 타입을 사용하면 코드를 읽고 쓰기가 더 쉬워진다.
프로그래머스 159993: 미로 탈출 [JAVA] https://school.programmers.co.kr/learn/courses/30/lessons/159993 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr [난이도]- level 2 [알고리즘]- BFS [코드]import java.util.*;import java.io.*;class Solution { static char[][] graph; static int n, m, answer = 0; static boolean[][] visited; static Queue queue = new LinkedList(); static..
[이펙티브 자바] 아이템 50. 적시에 방어적 복사본을 만들라 방어적 복사(defensive copying) : 가변 객체를 다룰 때, 해당 객체를 외부로부터 보호하기 위해 사용되는 기법이다. 이 기법은 객체의 내부 상태를 변경할 수 없도록 하기 위해 객체를 복사하여 사용하는 것을 의미한다. 악의적인 의도를 가진 사람들이 시스템의 보안을 뚫으려는 시도가 늘고있는만큼, 클라이언트가 내가 작성한 코드의 불변식을 깨뜨리려 혈안이 되어 있다고 가정하고 방어적으로 프로그래밍해야한다. 생성자에서 받은 가변 매개변수 각각을 방어적 복사하고, 이 복사본으로 유효성을 검사해야한다. 그리고 인스턴스 안에서는 원본이 아닌 복사본을 사용한다. 그리고 이때 매개변수가 제3자에 의해 확장할 수 있는 타입이라면 방어적 복사본을 만들 때  clone을 사용해서는 안 된다.clone() 메서드는..
프로그래머스 169199 : 리코쳇 로봇 [JAVA] https://school.programmers.co.kr/learn/courses/30/lessons/169199 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr[난이도]- level 2 [알고리즘]- BFS [코드]import java.util.*;import java.io.*;class Solution { public int solution(String[] board) { int answer = 0; int[] dx = {-1, 1, 0, 0}; int[] dy = {0, 0, -1, 1}; bool..
백준 14889: 스타트와 링크 [JAVA] https://www.acmicpc.net/problem/14889 [난이도]- Silver 1 [알고리즘]- DFS- 완전탐색- 백트래킹 [코드]import java.io.*;import java.util.*;public class Main { static int N, answer = Integer.MAX_VALUE; static int[][] players; static boolean[] selected; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTok..
백준 2961: 도영이가 만든 맛있는 음식 [JAVA] https://www.acmicpc.net/problem/2961 [난이도]- Silver 2 [알고리즘]- 완전탐색- DFS- 백트래킹 [코드]import java.io.*;import java.util.*;public class Main { static int N, answer = Integer.MAX_VALUE; static int[][] ingredient; static boolean[] selected; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Buffere..
[이펙티브 자바] 아이템 49. 매개변수가 유효한지 검사하라 매개변수 유효성 검사는 메서드나 함수가 실행되기 전에 입력 값이 기대한 조건을 충족하는지 확인하는 과정이다. 이를 통해 잘못된 입력이 메서드나 함수에 전달되는 것을 방지할 수 있다. 아래 코드처럼 문서화하고 명시적으로 검사할 수 있다./** * 두 개의 양수를 더하는 메서드 * @param a 첫 번째 양수 * @param b 두 번째 양수 * @return 두 양수의 합 * @throws IllegalArgumentException 매개변수가 음수인 경우 발생 */public int add(int a, int b) { if (a  핵심 정리 : 메서드나 생성자를 작성할 때면 그 매개변수들에 어떤 제약이 있을지 생각해야 한다. 그 제약들을 문서화하고 메서드 코드 시작 부분에서 명시적으로 검사해야 한..