전체 글 썸네일형 리스트형 백준 - 17609 회문(Java) 구현 문제입니다. 각 테스트 케이스에서 문장이 주어질 때, 해당 문장이 회문 or 유사 회문 or 일반 문장인지 확인하는 문제입니다. 회문일 경우 0 유사 회문일 경우 1 일반 문장일 경우 2 회문을 판단하는 방법은 앞, 뒤의 문자를 확인하면 됩니다. for(int i=0; i < (n/2); i++){ if(senChars[i] != senChars[n-1-i]){ // 앞, 뒤 문자가 같지 않을 경우(회문이 아닌 경우) } } 문제 접근 순서는 다음과 같습니다. 큐에 문장을 넣는다. 문장이 회문인지 확인한다. 회문이 아니라면 회문이 아닌 곳을 기준으로 문장을 자른다. 자른 문장을 큐에 넣는다. 회문인지 확인한다. 큐의 반복 횟수에 따라 회문 or 유사 회문 or 일반 문장을 판단한다. 그림과 같이 x.. 더보기 백준 - 17406 배열 돌리기4(Java) 순열 문제입니다. 회전 정보가 주어졌을 때, 각 행의 최소 합을 구하는 문제입니다. 문제 조건에 나와있듯이, 회전 순서에 따라 행의 최소 합이 달라집니다. 접근 순서는 다음과 같습니다. 회전 정보를 저장한다. 회전 정보를 바탕으로 정보의 순열을 구한다. 순열 만큼 반복하여 회전하여 행의 최소 합을 구한다. ※ 주의할 점 직사각형 회전이 아닙니다. 제일 먼저 바깥쪽 테두리를 회전하고, 안쪽 테두리를 회전해야 합니다. 재귀를 통해 구현할 수 있습니다. [구현 코드] import java.io.*; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; public class Main { private static.. 더보기 백준 - 15686 치킨 배달(Java) 조합(백트랙킹) 문제입니다. N*N의 맵에서 M개 이상의 치킨 집이 주어집니다. M개 이상의 치킨 집을 M개의 치킨 집만을 만들어 각 집에서의 최소 거리를 구해야 하는 문제입니다. 즉, M개 이상의 치킨 집을 조합으로 M개로 만들어 거리를 구하는 완전탐색 문제인 것입니다. [구현 코드] import java.io.*; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; public class Main { private static int n, m; private static List chickens, homes; private static List combis; // 치킨 집 조합 public static.. 더보기 백준 - 24955 숫자 이어 붙이기(Java) bfs 문제입니다. 문제의 설명이 복잡하지만, 요약하면 다음과 같습니다. 노드의 개수는 N개이다. 간선의 개수는 N-1개이다. (최소신장트리) 각 노드마다 숫자(가중치)가 주어지는데, 시작 노드 부터 도착 노드 까지 갈 때의 숫자를 이어 붙여라. (덧셈 아닙니다. 문자열로 만들어 이어 붙이는 것입니다.) 입력을 요약하면 다음과 같습니다. 첫 번째 줄에는 노드의 개수인 N과 탐색 횟수인 Q가 주어진다. 두 번째 줄에는 각 노드의 가중치가 주어진다. 세 번째 줄 부터 N-1개 만큼 연결 정보(간선)이 주어진다. 마지막으로 Q개 만큼 탐색할 시작 노드와 도착 노드가 주어진다. 예제 입력1을 그림으로 표현하면 다음과 같습니다 예제 입력 네 번째 줄 까지가 트리의 정보입니다. 다 섯번째 줄 부터 Q개 만큼 탐색할.. 더보기 백준 - 16197 두 동전(Java) bfs 문제입니다. 보드의 크기는 N*M입니다. 보드 위에 두 개의 동전, 빈칸, 벽(이동 불가능한 위치) 가 주어집니다. o : 동전 . : 빈칸 # : 벽 버튼을 누르면 두 개의 동전이 동시에 네 방향(상, 하, 좌, 우) 중 한 방향으로 움직일 때, 단 한 개의 동전만 떨어뜨리는 최소 경우의 수를 구하는 문제입니다. 문제 접근 순서는 다음과 같습니다. 동전이 하나만 떨어져 있는지 확인한다.(최소 갱신) 동전을 네 방향으로 움직인다. (벽이 있는지 확인해야 한다.) 동전을 움직였을 때, 두 개의 동전 상태를 구한다. 1번을 반복한다. ※ 주의 사항 최소 버튼을 누르는 경우의 수가 10 초과일 경우 -1을 반환해야 합니다. 저는 10 이상으로 했었어서 오늘도 삽질을 했습니다.... 또한, 문제를 잘못 .. 더보기 [Java]System.out.println \n와 \r\n 흔히 자바는 JVM 덕분에 운영체제에 독립적으로 동작된다고 알려져 있습니다. 각 운영체제에 맞는 JVM만 설치하면, 프로그래머 입장에서는 운영체제에 상관 없이 개발할 수 있기 때문입니다. 하지만, 운영체제에 따라 같은 코드라도 다르게 동작하는 것이 몇 개 있습니다. 그 중 하나가 System.out.println()입니다. 흔히 줄바꿈(띄어쓰기, 개행)의 목적으로 println을 사용합니다. 문장을 출력하고 자동으로 줄바꿈을 하기 때문입니다. 이 줄바꿈는 운영체제 마다 하는 방식이 달라집니다.(운영체제 마다 줄바꿈 문자가 다르기 때문입니다.) 제 삽질을 통해 예시를 보여드리겠습니다. 저는 출력을 비교하는 테스트 코드를 작성하고 있었습니다. 이 출력을 으로 출력이 정상적으로 이뤄지는지 확인을 하는 코드입니.. 더보기 디자인 패턴 - 비지터 패턴(Visitor Pattern) 1. 정의 다양한 객체에 새로운 기능을 추가한다. 단, 캡슐화가 깨지게 된다. 2. 예시 메뉴 복합 객체를 탐색하면서 깊이(Depth) 출력 기능을 추가한다. 💡 컴포지트 패턴 참고 3. 그림 4. 클래스 다이어그램 5. 코드 public class Client { public static void main(String[] args){ Visitor visitor = new Visitor(); MenuComponent breakfast = new Menu("아침 메뉴", "08:00~11:00", visitor); MenuComponent lunch = new Menu("점심 메뉴", "12:00~17:00", visitor); MenuComponent dinner = new Menu("저녁 메뉴", ".. 더보기 디자인 패턴 - 프로토타입 패턴(Prototype Pattern) 1. 정의 인스턴스를 깊은 복사하여, 인스턴스 생성의 자원 소모를 줄일다. 💡 매번 DB의 데이터를 가져와서 인스턴스를 만드는 경우 자원 소모가 심하기 때문에, 깊은 복사를 통해 자원 소모를 줄인다. 2. 예시 몬스터의 종류를 복사하여 사용한다. 3. 그림 4. 클래스 다이어그램 5. 코드 public class Client { public static void main(String[] args) throws CloneNotSupportedException { Monsters monsters = new Monsters(); monsters.loadData(); Monsters upMonster = (Monsters) monsters.clone(); Monsters downMonster = (Monster.. 더보기 이전 1 ··· 15 16 17 18 19 20 21 ··· 48 다음