온라인저지 144

[BOJ] 1193번: 분수찾기

1193번: 분수찾기 많이 비효율적인 코드이긴 한데... 내일 다시 풀어보도록 하자. 코드 #include using namespace std; int main() { ios_base::sync_with_stdio(false), cin.sync_with_stdio(false); int n, i; cin >> n; for (i = 1; (i * i + i) / 2 < n; ++i) { } int tmp = ((i - 1) * (i)) / 2, s, f; if (i & 1) { s = i, f = 1; while (tmp != n - 1) s--, f++, tmp++; } else { s = 1, f = i; while (tmp != n - 1) s++, f--, tmp++; } cout

온라인저지 2018.07.19

[BOJ] 3054번: 피터팬 프레임

3054번: 피터팬 프레임 배열로 할 수도 있고 직접 출력을 할 수도 있지만 나는 직접 출력하는 방식을 택했다. 만약 배열로 한다면 세로로 보는 것이 편할 것 같다는 생각이다. 풀이 (1번 줄, 5번 줄), (2번 줄, 3번 줄)은 동일하다. 가로길이: 입력된 문자열 길이 * 4 + 1 세로 길이: 5 1번 줄: '#' | '*'이 나오는 위치: 3 7 11 ··· -> i % 4 == 3 *이 나오는 위치: 11 23 ··· -> i % 12 == 11 나머지는 '.'출력 2번 줄: '#' | '*'이 나오는 위치: 짝수 -> i % 2 == 0 '*'이 나오는 위치: 10 12 22 24 ··· -> i % 12 == 10 | i % 12 == 0 나머지는 '.' 출력 가운데: 얘는 까다로워서 문자열..

온라인저지 2018.07.19

[BOJ] 3055번: 탈출

3055번: 탈출 BFS로 풀 수 있다. 주의해야 할 점은 물이 흐르는 것을 계산할 때 임시 배열에 변경 사항을 저장했다가 실제 배열에 적용시켜줘야 물이 정상적으로 흐르는 것을 계산할 수 있다. 코드 #include #include #include using namespace std; int R, C; const int dx[] = {0, 0, 1, -1}, dy[] = {-1, 1, 0, 0}; char map[51][51]; bool visit[51][51]; pair D, S; inline bool safe(int y, int x) { return (0

온라인저지 2018.07.19

[BOJ] 3048번: 개미

3048번: 개미 단순히 구현을 통해 구할 수 있는 문제이기도 하고 결과를 생각해서 구현할 수도 있다. 하지만 나는 시뮬레이션을 다 돌렸다. 코드 시뮬레이션을 다 하기 때문에 결과를 기준으로 코드를 짠 것보다 메모리를 더 많이 사용한다. 더 느린진 모르겠지만 아마 더 느리지 않을까..? #include using namespace std; int main() { int N1, N2, T; array dir; string s1, s2; cin >> N1 >> N2 >> s1 >> s2 >> T; reverse(s1.begin(), s1.end()); for (int i = 0; i < N1; ++i) dir[i] = 'R'; for (int i = N1; i < N1 + N2; ++i) dir[i] = '..

온라인저지 2018.07.19

[BOJ] 3049번: 다각형의 대각선

3049번: 다각형의 대각선 대각선 교차점 하나가 생기려면 대각선 두 개가 필요하고 대각선은 꼭지점 2개로 이뤄지기 때문에 총 4개의 꼭지점의 조합이 필요하다. 즉, n개의 꼭지점 개수 중에서 4개를 순서 없이 선택하면 된다. 그래서 를 계산하면 된다. 코드 #include int main() { int n; scanf("%d", &n); printf("%d", (n * (n - 1) * (n - 2) * (n - 3)) / 24); return 0; }

온라인저지 2018.07.19