본문 바로가기

분류 전체보기

(209)
[ 백준 / C++ ] 1138 : 한 줄로 서기 [ 문제 ] 1138번: 한 줄로 서기 [ 접근방법 ] 키가 큰 사람부터 차례대로 벡터에 집어넣으면, 자기보다 큰 사람 수에 따른 위치를 쉽게 결정할 수 있다. [ 소스코드 ] #include #include using namespace std;int n, arr[10];vector vec;int main(){ ios::sync_with_stdio(0); cin.tie(0); cin >> n; for(int i = 0; i > arr[i]; vec.push_back(n); for(int i = n - 2; i >= 0; i--){ vec.insert(vec.begin() + arr[i], i + 1); } for(auto i : vec)cout
[ 백준 / C++ ] 1913 : 달팽이 [ 문제 ] 1913번: 달팽이 [ 접근방법 ] 중심에서부터 시작하여 2의 배수 크기로 4번 회전하는 것이 한 사이클이고,이를 반복하면 달팽이 모양이 된다.이를 반복문으로 간결하게 표현하였다. [ 소스코드 ] #include using namespace std;int n, m, snail[1000][1000];int dx[4] = {0, 1, 0, -1};int dy[4] = {1, 0, -1, 0};int main(){ ios::sync_with_stdio(0); cin.tie(0); cin >> n >> m; int center = n / 2; snail[center][center] = 1; int cnt = 2; for (int layer = 1; layer
[ 백준 / C++ ] 7795 : 먹을 것인가 먹힐 것인가 [ 문제 ] 7795번: 먹을 것인가 먹힐 것인가 [ 접근방법 ] 입력값을 정렬한 후, 투 포인터를 활용하여 O(N + M) 에 각 테스트케이스를 계산한다. [ 소스코드 ] #include #include using namespace std;int t, n, m;int main(){ ios::sync_with_stdio(0); cin.tie(0); cin >> t; while (t--) { cin >> n >> m; vector a(n); vector b(m); for (int i = 0; i > a[i]; for (int j = 0; j > b[j]; sort(a.begin(), a.end(), gre..
[ 백준 / C++ ] 3085 : 사탕 게임 [ 문제 ] 3085번: 사탕 게임 [ 접근방법 ] n이 최대 50이므로 브루트포스로 해결 가능하다. 교환 가능한 모든 경우에 대해 사탕 최대 개수를 계산한다. [ 소스코드 ] #include #include using namespace std;int n;char board[55][55];int cal(){ int ret = 0; for(int i = 0; i > n; for(int i = 0; i > board[i][j]; int ans = 0; for(int i = 0; i
[ 백준 / C++ ] 5014 : 스타트링크 [ 문제 ] 5014번: 스타트링크 [ 접근방법 ] 각 층에서 이동할  수 있는 층을 저장한 후 BFS를 통해 버튼 최솟값을 구한다. [ 소스코드 ] #include #include #include using namespace std;int f, s, g, u, d;vector vec[1000010];queue> que;bool chk[1000010];int main(){ ios::sync_with_stdio(0); cin.tie(0); cin >> f >> s >> g >> u >> d; for(int i = 1; i = 1)vec[i].push_back(i - d); } int ans = -1; que.push({s, 0}); chk[s] = true; ..
[ 백준 / C++ ] 11328 : Strfry [ 문제 ] 11328번: Strfry [ 접근방법 ] 입력마다 소문자 개수를 체크하여 비교한다. [ 소스코드 ] #include using namespace std;int n;int main(){ ios::sync_with_stdio(0); cin.tie(0); cin >> n; while(n--){ string a, b; int x[26] = {}; cin >> a >> b; for(auto ch : a)x[ch - 'a']++; for(auto ch : b)x[ch - 'a']--; bool chk = true; for(int i : x){ if(i != 0){ ..
[ 백준 / C++ ] 1946 : 신입 사원 [ 문제 ] 1946번: 신입 사원 [ 접근방법 ] 서류심사 성적을 기준으로 지원자들을 정렬한 뒤, 면접 성적을 비교하여 선발 가능한 최대 인원을 구하는 문제다. 일단, 서류심사 성적이 제일 높은 지원자는 무조건 선발한다. 이후 현재까지 선발한 지원자들의 최소 면접 성적보다 낮은 경우에만 선발하는 과정을 반복한다. 위 과정에서 선발 불가능한 지원자들은 애초에 회사에서 선발할 수 없기에,가능한 지원자를 전부 선발하는 것이 최대 인원이다. [ 소스코드 ] #include #include #include using namespace std;int t, n;vector> vec;int main(){ ios::sync_with_stdio(0); cin.tie(0); cin >> t; whil..
[ 백준 / C++ ] 18352 : 특정 거리의 도시 찾기 [ 문제 ] 18352번: 특정 거리의 도시 찾기 [ 접근방법 ] 다익스트라 알고리즘으로 도시별 최단 거리를 구한다. [ 소스코드 ] #include #include #include #include using namespace std;typedef pair P;int INF = 300010;int n, m, k, x, a, b;vector edge[300010];int d[300010];priority_queue, greater> que;int main(){ ios::sync_with_stdio(0); cin.tie(0); cin >> n >> m >> k >> x; for (int i = 0; i > a >> b; edge[a].push_back(P(b, 1)); ..