본문 바로가기

분류 전체보기

(19)
[백준 1992] 쿼드트리 자바 (분할 정복) 문제 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또 www.acmicpc.net 접근방식 현재의 시작점 x,y에서 size만큼 탐색하면서 중간에 다른 값이 없는 경우 flag를 true로 가지고 board의 값을 뽑아줌. 중간에 다른 값이 있는 경우 4분할하여 재귀를 돌면서 탐색함. 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public..
[SWEA 1873] 상호의 배틀필드 자바 문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 메모리 : 19,552 kb 시간 : 118 ms 접근방식 단순 구현이라 문제를 꼼꼼하게 읽었음. 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner; import java.util.StringTokenizer; public class Solution { static int H, W, x, y; static char[][] map; static Character direction; public s..
[SWEA 5644] 무선 충전 자바 문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 메모리 : 26,560KB , 시간 : 229ms 접근방식 배터리의 범위만큼 ArrayList에 담아줌. 각 리스트는 0번 배터리, 1번 배터리..의 범위를 가짐 A,B의 이동궤적을 배열에 저장해줌. 움직이는 것은 time을 증가시키면서 A,B의 위치에서 배터리의 범위에 포함되는 지를 확인함.(A,B 위치의 배터리를 조합하여 최대값을 찾는다고 이해함) A,B가 같은 배터리 범위 내에 있는 경우에는 값을 반으로 나눠줌. 이때 A,B가 값을 가지는지 확인하지 않아서 케이스 한 개에 걸렸었음 //배터리 리스트 for (int i = 0; i < list.lengt..
[SWEA 1249] 보급로 자바 BFS 문제 SWEA 1249 보급로 자바로 해결, BFS 사용함. SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 접근방식 복구 시간을 비교하면서 이전 위치에서 현재 위치(nx, ny)로 이동했을 때 복구 시간을 더해서 갱신시켜 준다. DFS로도 해결이 가능할 것 같은데 체크할 부분이 늘어날 것 같긴 하다. public static void BFS(int x,int y){ Q = new LinkedList(); Q.offer(new Point(x,y)); board[x][y] = 0; while(!Q.isEmpty()){ Point point = Q.poll(); for(int i=0;i=0 && nx < n && ..
[SWEA 1247] 최적 경로 자바 DFS 문제 SWEA 1247 최적 경로 문제 자바 사용하여 DFS로 풀었음. SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 접근방식 배송지를 방문할 때마다 거리 계산을 해주고 최종 거리에 도착했을 때 최솟값을 찾아주면 된다. 사실 거리 계산도 그렇고 DFS로 풀다보니 로직도 복잡할 건 없는데 시간을 줄이고 싶어서 min값보다 계산한 거리값이 큰 경우일 때는 리턴해주도록 짰다. public static void deliver(Point p,int count,int distance){ if(distance >= min) return; if(n==count){ distance += calDist(end,p); min =..
[Java] 자바 엑셀 파일 (.xlsx) 읽기 (poi 라이브러리) poi 라이브러리 아파치 poi 라이브러리를 사용하면 자바에서 간단한 코드로 엑셀 파일을 읽을 수 있습니다. poi-4.1.2 버전으로 다운로드 후 프로젝트에 라이브러리를 추가해 줬습니다. 다운로드 경로 : https://archive.apache.org/dist/poi/release/bin/ 기본 코드는 .xlsx을 읽어오는 xssf를 사용하는 버전으로 작성되었고 예전 버전인. xls을 읽어야 한다면 하단의 블로그 글을 참고하시면 될 것 같습니다. [Java] 엑셀 파일(.xls) 읽기 자바에서 엑셀 파일(.xls)을 읽어오는 방법입니다. 이클립스에서 poi 라이브러리 다운로드 및 추가 방법은 아래 글을 참고해주세요 https://yangsosolife.tistory.com/7 [Java] POI 라이..
[에러 해결] The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF) 문제 상황 The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF) 문제 및 해결 Java에서 xlsx 파일을 HSSF로 열려고 하면 발생하는 에러이다. HSSF가 아닌 XSSF를 사용해서 엑셀파일을 읽어주면 되는데 만약 poi 라이브러리에서 XSSF를 import 하려고 했는데 나오지 않는다면 라이브러리 중 poi-ooxml. jar 파일을 추가해 주자. import org.ap..
[에러 해결] NoClassDefFoundError: org/apache/xmlbeans/XmlException 해결 문제 상황 자바에서 poi 라이브러리로 엑셀 파일을 읽어오려다가 발생한 에러이다. 에러 문구대로 아파치에서 제공하는 xmlbeans 클래스가 정의되어있지 않아서 생긴 에러로 poi 라이브러리 중 xmlbeans 파일이 누락되어서 발생한다. 해결 방법 프로젝트 설정에서 poi-4.1.2/ooxml-lib/xmlbeans-3.1.0.jar을 추가해 주면 된다. 라이브러리 추가 방법 인텔리제이 - 프로젝트 우클릭 > 모듈 설정 열기 > 모듈 > 종속 요소 > +버튼 > JAR 또는 디렉터리 이클립스 - 프로젝트 우클릭 > Properties > Java Build Path > Libraries > Add External Jars
[백준 1707] 이분 그래프 자바 (DFS) 문제 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 www.acmicpc.net 그래프의 정점의 집합을 둘로 분할하여, 각 집합에 속한 정점끼리는 서로 인접하지 않도록 분할할 수 있을 때, 그러한 그래프를 특별히 이분 그래프 (Bipartite Graph) 라 부른다. 그래프가 입력으로 주어졌을 때, 이 그래프가 이분 그래프인지 아닌지 판별하는 프로그램을 작성하시오. 입력 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의..
[백준 14889] 스타트와 링크 자바(DFS) 문제 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 오늘은 스타트링크에 다니는 사람들이 모여서 축구를 해보려고 한다. 축구는 평일 오후에 하고 의무 참석도 아니다. 축구를 하기 위해 모인 사람은 총 N명이고 신기하게도 N은 짝수이다. 이제 N/2명으로 이루어진 스타트 팀과 링크 팀으로 사람들을 나눠야 한다. BOJ를 운영하는 회사 답게 사람에게 번호를 1부터 N까지로 배정했고, 아래와 같은 능력치를 조사했다. 능력치 Sij는 i번 사람과 j번 사람이 같은 팀에 속했을 때, 팀에 더해지는 능력치이다. 팀의 능력치는 팀에 속한 모든 ..