본문 바로가기

전체 글46

[BFS+브루트포스] 16988 : Baaaaaaaaaduk2 (Easy) 스터디 9주차 https://www.acmicpc.net/problem/16988 /* 백준 16988 : Baaaaaaaaaduk2 (Easy) 분류 : 브루트포스 + BFS 내 바둑돌을 검은돌, 상대 바둑돌을 흰돌로 생각하고 풀었음 풀이 : 빈 칸마다 검을돌 두 개를 놓는다고 가정하고(브루트포스), 그 상황에서 죽는 흰돌의 개수를 세어준다(BFS) 1. 빈 칸마다 검은돌 두 개를 놓는다고 가정(브루트 포스) => 처음에 입력받을 때 빈 칸을 미리 판별해서 for문 돌릴 때 빈칸에 바둑돌 놓는 것만 생각했음 => 각 경우의 수마다 board에 놓았던 바둑돌을 제거하고, visited를 초기화해줘야함 (중요) 2. BFS : 그렇게 놓인 상황에서 다시 이중for문을 돌려 흰돌을 발견하면 BFS로 죽는 흰.. 2019. 3. 11.
1535 안녕 https://www.acmicpc.net/problem/1535 최적화 문제, bottom-up방식으로 해결 노트 :1. bottom-up방식으로 하면 memo[x][1]에 정답이 쌓임2. 매개변수로 들어오는 num번째 사람과 인사를 할 때와 안 할 때로 나눠서 생각3. 인사를 할 경우, 인사를 안 할 경우와 비교해서 큰 값을 저장 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556//// hello.cpp// Week8//// Created by 신유진 on 04/03/2019.// Copyright © 2019 신유진. All rights reserved.///* 1.. 2019. 3. 5.
2644 촌수계산 https://www.acmicpc.net/problem/2644 BFS로 최단거리를 계산해서 촌수를 계산해줌 오답노트 :1. 컴파일에러때문에 고생했는데 벡터의 size()는 unsigned int를 반환하므로 int(v.size())이런식으로 int로 바꿔줘야 함2. 촌수계산은 자식에서 부모로 계산하는 경우도 있으므로 양방향그래프로 만들어야 함=> 1 - 2가 주어지면 간선은 1-2, 2-1 둘 다 따져줘야 함 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182//// famil.. 2019. 3. 4.
1233 주사위 https://www.acmicpc.net/problem/1233 3중 for문으로 각 주사위합의 빈도수를 계산해 주고, 그 중 가장 빈도가 높은 숫자 반환 1234567891011121314151617181920212223242526272829303132333435//// dice.cpp// Week8//// Created by 신유진 on 04/03/2019.// Copyright © 2019 신유진. All rights reserved.// #include using namespace std;int a, b, c;int cnt[81]; //3부터 80까지 주사위합의 수열int max() { int ans = 0; int idx = 3; for(int i=3; ia>>b>>c; for(int i=1; i 2019. 3. 4.
1292 쉽게 푸는 문제 스터디 8주차1292 쉽게 푸는 문제 n이 n번 나열되는 수열cnt를 활용해서 n번만큼 나열하게 함idx는 숫자 하나를 나열할 때마다 증가 부분합이용수열의 a번째부터 b번째까지의 합=arr[b] - arr[a-1] 1234567891011121314151617181920212223242526272829303132333435/*1292 쉽게 푸는 문제분류 : 부분합 이용 */#include using namespace std;int arr[1111]; int main() { int start, end; cin >> start >> end; arr[0] = 0; int idx = 1; // 수열의 인덱스 int num=1; // 수열에 등장하는 숫자 // 인덱스가 end일 때까지 cnt에 숫자를 넣고 그 숫.. 2019. 3. 4.
11057 오르막수 스터디 8주차 memo[i][j] : i번째 자릿수(숫자의 맨뒤부터)가 j일 때 가능한 오르막수의 개수 3중 포문으로 2번째 자릿수부터 n번째 자릿수까지, memo[i][0]부터 memo[i][9]를 구한다.memo[i][j]는 i-1번째 자릿수에 대해 j부터 9까지를 구한 것임 (011, 012 ....... 019처럼) 최종답안은 memo[n][0]부터 memo[n][9]까지의 합이 됨 오답노트 :계산 도중에 int의 범위를 벗어나기 때문에포문을 돌릴 때도 10007로 나눠줘야 함 1234567891011121314151617181920212223242526272829303132333435363738394041424344/*오답노트:포문에서도 10007로 나눠줘야함계산 중에 int범위를 초과하게 되므.. 2019. 3. 4.