본문 바로가기
반응형

Algorithm/Baekjoon54

[백준/BOJ] 9095번 - 1, 2, 3 더하기 (C++) 문제 링크 코딩하기 전 생각하기 /* 1. 테이블 정의하기 D[i] = i를 1, 2, 3의 합으로 나타내는 방법의 수 2. 점화식 찾기 D[3] : (3을 1, 2, 3의 합으로 나타내는 방법) 4개 D[2] : (2를 1, 2, 3의 합으로 나타내는 방법) 2개 D[1] : (1를 1, 2, 3의 합으로 나타내는 방법) 1개 D[4] = D[1] + D[2] + D[3] D[i] = D[i-1] + D[i-2] + D[i-3] 3. 초기값 정하기 D[1] = 1, D[2] = 2, D[3] = 4 */ 코드 #include using namespace std; int d[20]; int main() { ios::sync_with_stdio(0); cin.tie(0); d[1] = 1; d[2] = 2.. 2021. 10. 2.
[백준/BOJ] 10026번 - 적록색약 (C++) 문제 링크 코딩하기 전 생각하기 /* 큐를 이용한 BFS 방식을 사용하자. 적록색약이 아닌 사람과 적록색약인 사람을 구분하여 board를 두 개 만들자. 각각의 board를 탐색하고 구역을 count한다. count 값을 출력한다. */ 코드 #include using namespace std; #define X first #define Y second char board1[101][101]; // non 적록색약 board char board2[101][101]; // 적록색약 board bool vis1[101][101]; // non 적록색약 방문 bool vis2[101][101]; // 적록색약 방문 int n; int dx[4] = {1, 0, -1, 0}; int dy[4] = {0, 1, .. 2021. 9. 22.
[백준/BOJ] 5397번 - 키로거 (C++) 문제 링크 코딩하기 전 생각하기 /* STL list를 활용하자. 커서의 위치를 t라고 하고 t에 list의 begin iter값을 넣어준다. 입력받은 문자열을 순회한다. 문자가 ''이면 커서 위치를 바꿔준다. 문자가 '-'이면 커서 위치에 있는 list의 문자를 삭제한다. 위의 경우가 아니면 커서 위치에 문자를 추가한다. list를 출력한다. */ 코드 #include #include using namespace std; int main() { int n; cin >> n; for (int i = 0; i > s; for (int j = 0; j < s.size(); j++) { if (s[j] == .. 2021. 8. 17.
[백준/BOJ] 7568번 - 덩치 (C++) 문제 링크 코딩하기 전 생각하기 /* 브루트 포스(이중 반복문) 방식을 이용하자. 키와 몸무게 값이 둘 다 큰 학생이 있으면 rank에 1을 더한다. rank 벡터를 출력한다. */ 코드 #include #include using namespace std; int main() { int n, x, y; vector v; vector rank; cin >> n; for ( int i = 0; i > x >> y; v.push_back(pair(x, y)); rank.push_back(1); } for ( int i = 0; i < n; i++ ) { for ( int j = 0; j < n; j++ ) { if ( i == j ) continue; if ( v[i].firs.. 2021. 8. 16.
[백준/BOJ] 2798번 - 블랙잭 (C++) 문제 링크 코딩하기 전 생각하기 /* 브루트포스 방식을 이용하자. */ 코드 #include #include using namespace std; int main() { int n, m, a, sum, max = 0; vector v; cin >> n >> m; for ( int i = 0; i > a; v.push_back(a); } for ( int i = 0; i < n - 2; i++ ) { for ( int j = i + 1; j < n - 1; j++ ) { for ( int k = j + 1; k < n; k++ ) { sum = v[i] + v[j] + v[k]; if ( sum max ) max = sum; } } } cout 2021. 8. 13.
[백준/BOJ] 17213번 - 과일 서리 (C++) 문제 링크 코딩하기 전 생각하기 /* 확률 문제이다. 펜과 종이를 꺼내야겠다. */ 코드 #include #include using namespace std; int main() { long long n, r, x, y, x_i, y_i; // 분자: x, 분모: y cin >> n >> r; r -= n; x = 1, x_i = n + r - 1; y = 1, y_i = n - 1; for ( int i = 0; i < n - 1; i++ ) { x *= x_i; y *= y_i; x_i--; y_i--; } cout 2021. 8. 4.
[백준/BOJ] 2783번 - 삼각 김밥 (C++) 문제 링크 코딩하기 전 생각하기 /* min 변수를 생성한다. 처음에 x, y를 입력받고 x/y 값을 min에 저장한다. x/y는 1g당 삼각김밥의 가격이다. n을 입력받고 n만큼 반복한다. x, y를 입력받고 x/y 값이 min보다 작으면, x/y 값을 min에 저장한다. min에 1000을 곱하고 소수점 두 자릿수 까지 출력한다. */ 코드 #include #include using namespace std; int main() { double x, y, min; int n; cin >> x >> y >> n; min = x/y; for ( int i = 0; i > x >> y; if ( min > x/y ) min = x/y; } printf("%.2f", min .. 2021. 7. 27.
[백준/BOJ] 1764번 - 듣보잡 (C++) 문제 링크 코딩하기 전 생각하기 /* 찾기 속도가 빠른 unordered_set과 자동으로 정렬되어 추가되는 set을 사용하자. 듣도 못한 사람을 unordered_set에 저장하자. 보도 못한 사람을 입력받으면서 이름이 unordered_set에 있으면 set에 이름을 추가한다. set의 크기와 내용을 출력한다. */ 코드 #include #include #include using namespace std; int main() { unordered_set s; set answer; string str; int n, m; cin >> n >> m; for ( int i = 0; i > str; s.insert(str); } for ( int i = 0; i < m; i++.. 2021. 7. 24.
[백준/BOJ] 2846번 - 오르막길 (C++) 문제 링크 코딩하기 전 생각하기 /* 오르막길 벡터를 선언하자. max 변수를 선언하자. n을 입력받고 n만큼 반복한다. p를 입력받는다. 이전 수보다 더 크지 않은 p가 오면 지금까지 오르막길의 크기를 구하고 크기가 max보다 크면 max에 크기를 저장한다. 오르막길 벡터를 초기화 한다. p를 벡터에 추가한다. max를 출력한다. */ 코드 #include #include using namespace std; int main() { vector up; int d, max = 0; int n, p; cin >> n; for ( int i = 0; i > p; if ( i > 0 && up[up.size()-1] >= p ) { d = up[up.size()-1] - up[.. 2021. 7. 24.
[백준/BOJ] 10250번 - ACM 호텔 (C++) 문제 링크 코딩하기 전 생각하기 /* n을 h로 나눈 나머지는 층이고, n을 h로 나눈 몫 + 1은 호이다. */ 코드 #include #include using namespace std; int main() { int t, h, w, n, a; cin >> t; for (int i = 0; i > h >> w >> n; if ( n % h == 0 ) { a = h * 100; a += n / h; } else { a = (n % h) * 100; a += n / h + 1; } cout 2021. 7. 24.
반응형