본문 바로가기

전체 글46

Java 시험장 팁 1. 정렬 sort() Arrays.sort() : 배열 정렬 Collections.sort() : List Collection 정렬 ex) ArrayList, LinkedList, Vector Interface Comparable 기본적으로 적용되는 정렬 기준이 되는 메서드를 정의 기본적으로 오름차순 구현 방법 정렬할 객체에 Comparable interface implements compareTo() 메서드 오버라이드 리턴 값이 음수, 0 ⇒ 그대로 리턴 값이 양수 ⇒ 두 객체 swap if(this.o > param.o) return 1 // 오름차순 if(this.o < param.o) return 1 // 내림차순 else return -1 - 예시 @Override // 오름차 순 (어린거부터.. 2020. 4. 24.
sample 2020. 1. 16.
SWEA 모의 역량 테스트 2105 디저트 카페 SW Expert Academy 자료구조 cake : 각 디저트를 먹었는지 체크 visit : 각 칸을 방문했는지 페크 풀이 각 칸마다 dfs를 돌린다 ⇒ 돌린 후, 첫 칸에 대한 cake과 visit을 초기화! dfs 파라미터 y, x, dir은 현재 좌표와 이동방향 sy, sx는 시작점 cnt는 디저트를 몇 개 먹었는가 (depth) change는 방향을 몇 번 꺾었는가 (사각형을 만들려면 총 3회꺾어야 함) DFS의 조건문 세 번 꺾은 후 출발점으로 되돌아온 경우 if(change==3 && y==sy && x==sx) 범위 초과, 이미 방문, 이미 먹은 디저트 ⇒ return 출발점 : cake와 visit을 갱신해 준 후 다음 칸으로 재귀호출 (방향전환 x) 출발점이 아닐 경우 그대로 : 원래 .. 2019. 10. 9.
SWEA 모의 역량 테스트 5644 무선 충전 SW Expert Academy 자료구조 bc : BC들의 정보가 담긴 벡터 (P가 높은 순으로 정렬되어 있음) map : 각 칸은 벡터로 되어 있고, 해당 칸에서 사용 가능한 bc의 id가 담김 (자연스럽게 높은 순으로 정렬되어 있음) 풀이 sort() : BC들을 먼저 P가 높은 순으로 정렬한다 check_range() : 각 BC마다 BFS를 돌려서 방문하는 map의 벡터에 BC id를 넣어준다 ⇒ P가 높은 BC부터 돌려주기 때문에 자연스럽게 각 칸에도 P가 높은 순으로 들어가게 되어 있음 이제 m초간 시뮬레이션 : 각 칸의 벡터 크기로 조건을 나눠준다 A, B 한 명이 빈 칸에 있을 경우 (map[ay][ax].size()==0 || map[by][bx].size()==0) ⇒ 겹칠 일이 없으므.. 2019. 10. 9.
라즈베리 파이(RPi) Wi-Fi 와이파이 오류 참고로 VI 편집기 사용은 https://dany-it.tistory.com/18 여기에 잘 설명돼있다 와이파이 사용국가 코드를 영국(GB)로 변경 $ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=GB network={ ssid="무선네트워크SSID" psk="패스워드" } 와이파이 네트워크 인터페이스 내렸다 올리기 $ sudo ifconfig wlan0 down $ sudo ifconfig wlan0 up 참고 : https://www.withover.com/2018/08/wifi.html 2019. 10. 8.
라즈베리 파이 부팅 오류 해결! SD 카드 세 개를 포맷해서 라즈비안 이미지를 씌웠는데도 부팅이 계속 되지 않아서 검색해보니 부팅 성공하신 다른 분이 'NTFS' 포맷을 사용하신 걸 보고 'NTFS'로 포맷한 후 다시 부팅해봤다. 성공! 2019. 9. 11.
SWEA 5656 벽돌 깨기 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRQm6qfL0DFAUo SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! www.swexpertacademy.com 오답노트 1. dfs 돌릴 때 가로 길이가 12보다 작을 때도 0부터 12까지 고르게 함.. => 시간초과 for (int i = 0; i T; /* 여러 개의 테스트 케이스가 주어지므로, 각각을 처리합니다. */ for (test_case = 1; test_case > n >> w >> h; for (int i = 0; i < h; i++) { for (int j = 0; j < w; j+.. 2019. 7. 27.
SWEA 5653 줄기 세포 배양 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRJ8EKe48DFAUo&categoryId=AWXRJ8EKe48DFAUo&categoryType=CODE SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! www.swexpertacademy.com 풀이 방식 inact : 비활성화 벡터 act : 활성화 벡터 1. 새로 탄생한 애들을 넣어준다 2. sort(먼저 빠지는 애들을 뒤로가게끔) 3. inact를 뒤에서부터 탐색 - 활성화되는 애들 new_act 큐에 넣어주기 - 상하좌우 탐색해서 비어있으면 번식 - inact에서 제거 4. act를 뒤에서 탐색.. 2019. 7. 26.
백준 14466 소가 길을 건너간 이유 6 https://www.acmicpc.net/problem/14466 14466번: 소가 길을 건너간 이유 6 문제 소가 길을 건너간 이유는 그냥 길이 많아서이다. 존의 농장에는 길이 너무 많아서, 길을 건너지 않고서는 별로 돌아다닐 수가 없다. 존의 농장에 대대적인 개편이 있었다. 이제 작은 정사각형 목초지가 N×N (2 ≤ N ≤ 100) 격자로 이루어져 있다. 인접한 목초지 사이는 일반적으로 자유롭게 건너갈 수 있지만, 그 중 일부는 길을 건너야 한다. 농장의 바깥에는 높은 울타리가 있어서 소가 농장 밖으로 나갈 일은 없다. K마리의 (1 ≤ K ≤ 100, www.acmicpc.net 풀이방식 1. i,j 칸의 bridge리스트에 다리로 연결된 칸의 좌표를 넣어줌 2. 0으로 초기화 되어 있는 ma.. 2019. 5. 6.
백준 2573 빙산 https://www.acmicpc.net/problem/2573 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 나타내는 M개의 정수가 한 개의 빈 칸을 사이에 두고 주어진다. 각 칸에 들어가는 값은 0 이상 10 이하이다. 배열에서 빙산이 차지하는 칸의 개수, 즉, 1 이상의 정수가 들어가는 칸의 개수는 10,000 개 이하이다. 배열의 첫 번째 행과 열, 마지 www.acmicpc.net 풀이방법 1. check() 함수 각 칸이 몇 칸의 바닷물과 접해있는지 확인 => v에 좌표와 줄어들 높이를 넣어주기 2. update() .. 2019. 5. 2.
백준 115645 톱니바퀴 https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴가 1번, 그 오른쪽은 2번, 그 오른쪽은 3번, 가장 오른쪽 톱니바퀴는 4번이다. 이때, 톱니바퀴를 총 K번 회전시키려고 한다. 톱니바퀴의 회전은 한 칸을 기준으로 한다. 회전은 시계 방향과 반시계 방향이 있고, 아래 그림과 같이 회전한다. 톱니바퀴를 회전시키려 www.acmicpc.net 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.. 2019. 4. 13.
백준 15686 치킨 배달 https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸, 왼쪽에서부터 c번째 칸을 의미한다. r과 c는 1부터 시작한다. 이 도시에 사는 사람들은 치킨을 매우 좋아한다. 따라서, 사람들은 "치킨 거리"라는 말을 주로 사용한다. 치킨 거리는 집과 가장 가까운 치킨집 사이의 거리이다. 즉, 치킨 거리는 www.acmicpc.net 분류 : dfs, 미리계산해두기! 0. 미리 집집마다 모든 치킨집에 대한 치킨거리를 구하여 정렬해둔다 (ck_dist) 1. dfs로.. 2019. 4. 13.
백준 16235 나무 재테크 https://www.acmicpc.net/problem/16235 16235번: 나무 재테크 부동산 투자로 억대의 돈을 번 상도는 최근 N×N 크기의 땅을 구매했다. 상도는 손쉬운 땅 관리를 위해 땅을 1×1 크기의 칸으로 나누어 놓았다. 각각의 칸은 (r, c)로 나타내며, r은 가장 위에서부터 떨어진 칸의 개수, c는 가장 왼쪽으로부터 떨어진 칸의 개수이다. r과 c는 1부터 시작한다. 상도는 전자통신공학과 출신답게 땅의 양분을 조사하는 로봇 S2D2를 만들었다. S2D2는 1×1 크기의 칸에 들어있는 양분을 조사해 상도에게 전송하고, 모든 www.acmicpc.net 분류 : 시뮬레이션 오답노트 1. 나무죽이기 한 칸에서 죽는 나무가 하나 나오면 그 뒤로 다 죽여버림 (pop_back) 문제는 f.. 2019. 4. 12.
백준 16236 아기상어 https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가지고 있고, 이 크기는 자연수이다. 가장 처음에 아기 상어의 크기는 2이고, 아기 상어는 1초에 상하좌우로 인접한 한 칸씩 이동한다. 아기 상어는 자신의 크기보다 큰 물고기가 있는 칸은 지나갈 수 없고, 나머지 칸은 모두 지나갈 수 있다. 아기 상어는 자신의 크 www.acmicpc.net 소스 코드 http://colorscripter.com/s/kwHP02Y 오답노트 1. 상어가 움직인 자리를 0으로 바꿔줘야 하는데.. 2019. 4. 11.
백준 14888 연산자 끼워넣기 오답노트 1. min과 max의 초기값 설정때문에 오답이 나왔었음 => 나올 수 있는 최소/최댓값을 초기값으로 설정해줘야 모든 테스트케이스를 통과할 수 있다 소스코드 http://colorscripter.com/s/JvQVkAK 2019. 3. 28.
백준 1890 점프 https://www.acmicpc.net/problem/1890 오답노트 1. 예외처리 => 칸의 숫자가 0이어서 더 이상 앞으로 갈 수 없는 경우 0을 반환한다 => 이 부분의 대한 예외처리가 없어서 // 5 // 2 0 0 0 0 // 3 0 0 3 0 // 1 0 0 0 0 // 0 0 0 0 0 // 0 0 0 1 0 이러한 예제의 경우 무한루프..! 1234567891011121314151617181920212223242526272829303132333435363738394041424344#include #include using namespace std;int n;int board[101][101];long long memo[101][101]; // i, j에서 n,n까지 갈 수 있는 경로의.. 2019. 3. 18.
백준 13458 시험감독 https://www.acmicpc.net/problem/13458 백준 13458 - 시험감독분류 : 기타문제 자체는 어렵지 않지만 범위를 생각해 줘야 함오답노트 1. cnt는 int로 하면 최악의 경우 10^12가 됨 (10^6명씩 10^6개의 시험장이 있고, 감독관이 1명밖에 커버못할 때)=> cnt를 long long으로 선언해주자2. signed long long형은 0 ~ 9,223,372,036,854,775,807 범위를 표현가능3. 총 감독관 한 명만 배치해도 커버가능한 경우를 걸러주지 않아서 오답이었음 1234567891011121314151617181920212223242526272829303132333435#include using namespace std;int n;int app[.. 2019. 3. 14.
1992 쿼드트리 https://www.acmicpc.net/problem/1992 오답노트:1. 4분할할 때 재귀호출시 매개변수를 잘못 줌 (size/2가 아니라 x+size/2로 해야 함. y에 대해서도 마찬가지)2. 모든 칸이 같은 칸으로 이루어져 있는지 확인하는 for문의 종료조건은 x+size/2가 아니라 x+size임3. 기저사례는 따로 필요 없다=> 원래 (y,x,1)일 때, 즉 분할해서 한 칸만 남았을 경우를 기저사례로 삼았었음=> 칸 수에 상관없이 size가 1일 때도 30번째 줄에서 조건이 맞아 걸러진다.4. 받은 입력이 0이나 1중 한 수로 이루어져 있다면 괄호는 출력되지 않는다 ex) 입력 맞는 출력 원래 생각한 출력2 0 (0)00 00 => 따라서 괄호는 분할시에만 넣어주면 된다! 12345678.. 2019. 3. 13.
6679 싱기한 네자리 숫자 https://www.acmicpc.net/problem/6679 풀이 :s-진수의 각 자릿수를 구하려면 s로 계속 나눠주며 나머지를 구한다=> 2진수 구하는 방법에서 아이디어 얻음 1234567891011121314151617181920212223242526272829#include #include using namespace std; // 각 자릿수별로 더한값int sum(int num, int s) { int ret=0; while(num>=1) { int x = num%s; num = num/s; ret += x; } return ret;} int main() { for(int num=1000; num 2019. 3. 13.
2688 줄어들지 않아 https://www.acmicpc.net/problem/2688 오답노트 :1. 포문이 많을 땐 인덱스를 조심하자2. 변수 초기화를 해주자!!! (line27) 1234567891011121314151617181920212223242526272829303132333435363738 #include #include using namespace std;int T;int n;long long ans;long long memo[65][10]; // i번째자리가 숫자 j인 경우의 가짓수 int main() { for(int j=0; j 2019. 3. 13.