일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 후쿠오카 캐널시티
- 깊이 우선 탐색
- DP
- 너비 우선 탐색
- 삼성테스트
- dfs
- 완전 탐색
- 하카타역
- deque
- 미로찾기
- 플로이드
- 플로이드 와샬
- 일본 여행
- 시뮬레이션
- 큐
- 삼성시험
- 후쿠오카 4박 5일
- 알고리즘
- 후쿠오카
- 삼성 SW 테스트
- BFS
- queue
- IOS
- 백준
- 후쿠오카 여행경비
- 다이나믹 프로그래밍
- BOJ
- 후쿠오카 요도바시 하카타
- brute force
- 완전탐색
- Today
- Total
목록알고리즘 (82)
맛있는감귤
문제 : https://www.acmicpc.net/problem/5397 커서를 이동하며 문자를 삽입하거나 지워야하는 문제는 앵간하면 스택이나 큐로 풀 수 있다. 처음에는 리스트를 생각했지만 iterator로 복잡하게 할 바엔 stack이 나을 것 같아서 stack으로 해결했다. 쉽다고 생각하고 막 풀다가 testcase가 바뀌는 시점에서 줄바꿈을 안하는 멍청한 실수를 했다. #include <iostream> #include <string> #include <stack> using namespace std; stack<char> s1,s2; int T; int main(){ cin>>T; while(T--){ string s; cin>>s; for(int i..
문제 : https://www.acmicpc.net/problem/9019출처ACM-ICPC > Regionals > Asia > Korea > Nationwide Internet Competition > Asia Regional - Daejeon Nationalwide Internet Competition 2011 D번횟수가 아닌 연산의 순서를 출력하는 BFS 문제.그냥 queue 으로 풀었다.100이라는 숫자가 L을 했을 때 1000이되어야하는지 1이 되어야하는지 헷갈려서 두 방식으로 다 풀어봤는데 1000이 되는게 맞았다.4636 MS 나온건 함정 #include #include #include using namespace std; int main(){ int T; cin>>T; while(T--)..
문제 : https://www.acmicpc.net/problem/5427출처ACM-ICPC > Regionals > Europe > Northwestern European Regional Contest > Benelux Algorithm Programming Contest > BAPC 2012 F번 일반적인 미로찾기에서 퍼져나가는 장애물이 추가된 문제다. 미로찾기 + 바이러스 라고 생각하면 된다.시간을 따로 관리했다면 3차원 배열로 풀었을텐데 일괄적으로 관리해서 2차원으로 해결했다.먼저 불이 번지는 것을 연산하고 이동을 했다. 어처피 현재 위치는 큐에 들어있기 때문에 불이 먼져 번져도 상관없음비슷한 문제 : https://www.acmicpc.net/problem/3055 #include #includ..
문제 : https://www.acmicpc.net/problem/1963출처ACM-ICPC > Regionals > Europe > Northwestern European Regional Contest > NWERC 2006 G번 최소 횟수를 구한다는 점에서 BFS를 이용해 풀 수 있다는 것을 유추할 수 있다. 이 문제의 핵심은 기존의 숫자를 한 자리씩 바꾸는 것과 소수판별이다. 제출횟수 대비 정답률이 굉장히 높은게 신기하다. #include <iostream> #include <queue> using namespace std; bool nextPrime(int n){ if( (n&1) == 0 ) return (n == 2); for(int i=3; i*i<=n; i++) { if(..
문제 : https://www.acmicpc.net/problem/5014출처ACM-ICPC > Regionals > Europe > Northwestern European Regional Contest > Nordic Collegiate Programming Contest > NCPC 2011 D번 1차원 BFS 문제, 주어진 U,D에 따라 상하 이동만 있다고 생각하면 된다. #include #include using namespace std; bool visited[1000001]; queue q; int main(){ int F,S,G,U,D,cnt=0; bool flag = false; cin>>F>>S>>G>>U>>D; visited[S]=true; q.push(S); while(!q.empty..
문제 : https://www.acmicpc.net/problem/2573 시간에 따라 맵이 바뀌는 문제이다. 얼음이 녹을 때 시간마다 -1인줄 알았는데 기준점에서 동서남북 상태에 따라 얼음 융해도가 다르다는 것을 간과한 것이 문제였다. 코드가 더럽게 되었는데 문제점이 있으면 댓글로 지적해주시면 감사하겠습니다. #include <stdio.h> int R,C,cnt=0,time=0; int map[303][303]; bool isVisited[303][303]; int dr[4]={1,-1,0,0}; int dc[4]={0,0,1,-1}; void dfs(int r,int c){ isVisited[r][c] = true; for(int i=0;i<4;i++){ int nr = r+dr[i], ..
문제 : https://www.acmicpc.net/problem/2468출처Olympiad > 한국정보올림피아드 > KOI 2010 > 초등부 2번DFS 문제입니다. 잠기는 높이가 0일 때도 포함되는 것을 유념하시길 바랍니다.반복문 인자로 자주 쓰는 i,j,k는 함수 파라미터로 사용하지 말자...ㅠㅠ #include int map[101][101],ans=0,N; int di[4]={1,-1,0,0}; int dj[4]={0,0,1,-1}; bool isVisited[101][101]; void dfs(int ii, int jj, int k, int cnt){ isVisited[ii][jj] = true; for(int i=0;i= 0 && nj >= 0 && ni < N && nj < N && map..
문제 : https://www.acmicpc.net/problem/12790출처Contest > Coder's High > Coder's high 2016 Round 1: Online A번 MP는 5 * MP니깐 1 미만일 경우 1 * 5가 되어야 한다. #include <stdio.h> int main(){ int T; scanf("%d",&T); while(T--){ int hp=0,mp=0,a=0,d=0,n[8]; for(int i=0; i
문제 : https://www.acmicpc.net/problem/2477 github : https://github.com/JEONG-SEUNGWOOK/BOJ/blob/master/2477.cpp 출처 Olympiad > 한국정보올림피아드시․도지역본선 > 지역본선 2010 > 초등부 3번 Olympiad > 한국정보올림피아드시․도지역본선 > 지역본선 2010 > 중등부 2번 가장 긴 width와 height 값의 곱이 전체 사각형 넓이가 되고 양 옆의 테두리가 평행하다면 그 가운데에 놓인 테두리가 작은 사각형을 이루는 테두리다. 그 값 계산해 빼주면 전체 넓이가 나온다. #include #include using namespace std; struct Length{ int l=0, d=0; }; int..
문제 : https://www.acmicpc.net/problem/2458 github : https://github.com/JEONG-SEUNGWOOK/BOJ/blob/master/2458.cpp 출처 Olympiad > 한국정보올림피아드시․도지역본선 > 지역본선 2011 > 초등부 4번 갓초등부 문제치고는 쉬운 문제다. 플로이드 와샬 알고리즘을 이용해 각 노드의 연결 여부를 판단하고 자신의 키가 몇 번째 인지 아는 학생 (모든 연결고리를 가지고 있는 학생. 즉, 반복문을 돌린 배열에서 본인 노드가 N이라면 (N, Y)와 (X, N)이 모두 true인 노드)의 개수를 출력해주면 된다. 굳이 일일이 연결된 수를 계산안하고 bool 배열로 true 값만 찾아줘도 됩니다. #include #define IN..