일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- java의 정석
- 냄새와 휴리스틱
- Design Patterns
- 11758번
- Spring
- 가장 긴 증가하는 부분 수열2
- 자바의 정석
- 2206번
- Dxerr.h
- 백준
- 2166번
- Adapater Pattern
- 1043번
- programmers
- DxTrace
- Design Pattern
- java
- 프로그래머스
- SerialDate 리펙터링
- 11286번
- 2156번
- springboot
- 17장
- 클린코드
- BOJ
- 코딩 테스트
- 1300번
- 코딩테스트
- 10830번
- 9장
- Today
- Total
목록Coding Test/BOJ (24)
Don't give up!

2166번: 다각형의 면적 (acmicpc.net) 2166번: 다각형의 면적 첫째 줄에 N이 주어진다. 다음 N개의 줄에는 다각형을 이루는 순서대로 N개의 점의 x, y좌표가 주어진다. 좌표값은 절댓값이 100,000을 넘지 않는 정수이다. www.acmicpc.net 어떻게 생각하고 문제를 풀었는가? 3~10,000개의 점으로 이루어진 다각형은 각 꼭짓점을 이어 만든 1개 이상의 삼각형으로 표현할 수 있습니다. 따라서 0번째 점을 기준점으로 잡고 시계방향으로 겹치지 않는 삼각형의 너비를 모두 합한다면 다각형의 너비를 찾을 수 있다고 생각하였습니다. 코드 import java.io.*; import java.util.*; class Main { public static void main(String[]..
1931번: 회의실 배정 (acmicpc.net) 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 어떻게 생각하고 문제를 풀었는가? 한 회의실에서 진행 가능한 최대 회의의 수는 시작시간이 빠르고, 종료시간이 빠른 순으로 회의를 선택하는 경우입니다. 따라서 N개의 회의 정보를 종료시간과 시작시간에 따라 정렬한다면 문제를 해결할 수 있을 것이라고 생각하였습니다. 코드 import java.io.*; import java.util.*; class Main { public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedR..
1043번: 거짓말 (acmicpc.net) 1043번: 거짓말 지민이는 파티에 가서 이야기 하는 것을 좋아한다. 파티에 갈 때마다, 지민이는 지민이가 가장 좋아하는 이야기를 한다. 지민이는 그 이야기를 말할 때, 있는 그대로 진실로 말하거나 엄청나게 www.acmicpc.net 어떻게 생각하고 문제를 풀었는가? 진실을 아는 사람과 같은 파티에 속한 사람은 진실을 아는 사람이 됩니다. 결과적으로 과장된 이야기를 할 수 있는 파티를 찾기 위해서는 진실을 아는 사람들과 같은 파티에 참여하지 않아야 합니다. BFS로 진실을 아는 사람들이 참여하는 파티를 순회하며 다른 사람들을 queue에 넣음으로써 진실을 아는 파티와 그렇지 않은 파티를 계산할 수 있을 것이라고 생각하였습니다. 코드 import java.io..
2206번: 벽 부수고 이동하기 (acmicpc.net) 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 어떻게 생각하고 문제를 풀었는가? (1,1)부터 (N,M)까지의 최단 경로를 구하기 위해서는 BFS를 사용하여 문제를 해결할 수 있을 것이라고 생각하였습니다. 문제에서 단 한번 벽을 부술 수 있다는 것을 고려해야 하는데, 이를 해결하기 위해서 벽을 부순 상태에서의 최단거리와 벽을 부수지 않은 상태에서의 최단거리를 별도로 계산하여 해결하고자 하였습니다. 코드 import java.i..
1929번: 소수 구하기 (acmicpc.net) 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 어떻게 생각하고 문제를 풀었는가? 소수가 아닌 수는 소수로 나누어 떨어져야 합니다. 따라서 2부터 시작하여 소수를 찾고, 해당 값의 곱으로 나타내어지는 수들을 소수가 아닌 수라고 결정할 수 있으므로 이를 구현한다면 문제를 해결할 수 있을 것이라고 생각하였습니다. 코드 import java.io.*; import java.util.*; class Main { public static void main(String[] args) throws IOE..

1022번: 소용돌이 예쁘게 출력하기 (acmicpc.net) 1022번: 소용돌이 예쁘게 출력하기 첫째 줄에 네 정수 r1, c1, r2, c2가 주어진다. www.acmicpc.net 어떻게 생각하고 문제를 풀었는가? 소용돌이는 가장 안쪽에서부터 n번째 테두리는 (2n-3)^2+1 ~ (2n-1)^2의 값을 갖습니다. 우측 테두리서부터 시작하여 +1이 진행되므로 상, 하, 좌, 우로 나누어 (a, b) 위치의 값을 식으로 나타낼 수 있다고 생각하였습니다. 코드 import java.io.*; import java.util.StringTokenizer; class Main { public static void main(String[] args) throws IOException { BufferedRea..
1068번: 트리 (acmicpc.net) 1068번: 트리 첫째 줄에 트리의 노드의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 0번 노드부터 N-1번 노드까지, 각 노드의 부모가 주어진다. 만약 부모가 없다면 (루트) -1이 주어진다 www.acmicpc.net 어떻게 생각하고 문제를 풀었는가? 주어진 입력이 i번째 노드의 부모 노드가 몇번째 노드인지 나타내고 있고, 0번째 노드가 루트 노드가 아닐 수 있다는 점, 자식 노드의 수가 정해져 있지 않다는 점을 고려하였습니다. 이를 해결하고자 N개의 노드가 가리키는 부모 노드의 인덱스를 노드 초기화시 저장하고, 모든 노드가 초기화된 후 각 노드가 가리키는 부모 노드의 자식 노드를 추가하도록 하였습니다. 노드의 삭제시 자식 노드..
1051번: 숫자 정사각형 (acmicpc.net) 1051번: 숫자 정사각형 N*M크기의 직사각형이 있다. 각 칸은 한 자리 숫자가 적혀 있다. 이 직사각형에서 꼭짓점에 쓰여 있는 수가 모두 같은 가장 큰 정사각형을 찾는 프로그램을 작성하시오. 이때, 정사각형은 행 또는 www.acmicpc.net 어떻게 생각하고 문제를 풀었는가? 배열에 정사각형 구간을 설정하고, 각 꼭짓점의 문자가 모두 같은지 확인하여야 합니다. 좌상단 좌표를 for문 2개로 x와 y좌표를 선택, 문자가 같은 우상단 좌표를 얻었다면 좌하단, 우하단 좌표의 문자 비교를 통해 조건을 만족하는 정사각형 구간을 찾아내고 넓이를 구할 수 있습니다. 코드 import java.io.*; import java.util.*; class Main ..