구현 6

[구현] BOJ 15596 정수 N개의 합

https://www.acmicpc.net/problem/15596 15596번: 정수 N개의 합 C++17, Java 8, Python 3, C11, PyPy3, C99, C++98, C++11, C++14, Go, C99 (Clang), C++98 (Clang), C++11 (Clang), C++14 (Clang), C11 (Clang), C++17 (Clang) www.acmicpc.net 문제 해결 알고리즘 vector에 들어있는 모든 수들을 전부 더해주고 리턴해주면 된다. 함수를 만들어주는 문제이기 때문에 프로그램 전체를 제출하면 컴파일 에러가 뜨게 된다. 소스 코드 #include long long sum(std::vector &a) { long long ans = 0; for(int i=0;i

[구현, 자료구조 큐] BOJ 3190 뱀

https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 문제 해결 알고리즘 보드에 뱀의 위치를 1로 표시해 주고 뱀의 머리부분부터 꼬리 부분까지는 순서대로 전부 큐에 넣고 게임이 언제 끝나는지 그 시간을 출력해주면 된다. (큐를 이용하는 게 이 문제의 핵심인 것 같다.) 소스 코드 #include using namespace std; int N; int board[102][102]; queue q; // 방향 전환 queue snake; // 뱀의 길이 및 ..

[구현] BOJ 9626 크로스워드 퍼즐

https://www.acmicpc.net/problem/9626 9626번: 크로스워드 퍼즐 창영이는 크로스워드 퍼즐을 매우 좋아한다. 세계에 존재하는 모든 크로스워드 퍼즐을 다 푼 창영이는 이제 퍼즐을 예쁘게 장식하려고 한다. 퍼즐은 총 M×N개의 글자로 이루어져 있다. 창영이는 www.acmicpc.net 문제 해결 알고리즘 먼저 배열에 체스판 형식 장식을 전부 깔아준 후에 주어진 퍼즐을 위치에 입력한다. 소스 코드 #include using namespace std; char arr[20][20]; int main(){ int M, N; cin >> M >> N; int U, L, R, D; cin >> U >> L >> R >> D; for(int i=0;i

[구현] BOJ 2004 조합 0의 개수

https://www.acmicpc.net/problem/2004 2004번: 조합 0의 개수 첫째 줄에 정수 $n$, $m$ ($0 \le m \le n \le 2,000,000,000$, $n \ne 0$)이 들어온다. www.acmicpc.net 문제 해결 알고리즘 $$ \begin{pmatrix} n \\ m \end{pmatrix} = \frac{n!}{m! ( n-m ) !} $$ 조합이 계산 공식대로 $n!$과 $m! (n-m)!$의 2의 개수, 5의 개수를 각각 구해준 후 빼준 다음에 적은 개수를 출력해준다. 소스 코드 #include using namespace std; long long divide_5(long long x){ long long result = 0; for(long lo..

[구현, 정렬] BOJ 2108 통계학

https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 문제 해결 알고리즘 각각의 조건에 맞게 알고리즘을 구현한다. 소스 코드 #include using namespace std; int main(){ int N; cin >> N; vector v(N); for(int i=0;i> v[i]; } sort(v.begin(), v.end()); //산술평균 구하기 double sum = 0; for(int i=0;i

[구현] BOJ 1748 수 이어 쓰기 1

www.acmicpc.net/problem/1748 1748번: 수 이어 쓰기 1 첫째 줄에 N(1 ≤ N ≤ 100,000,000)이 주어진다. www.acmicpc.net 문제 해결 알고리즘 이 문제를 숫자들을 나열해서 풀이하려하면 시간초과가 난다. 그러므로 간단한 식을 써서 풀어야하는데, 간단하다. 1. 우선 주어진 수 $N$의 자리수를 구한다. 2. 결괏값(result)에 자리수 $i$에 대해 1부터 $N-1$의 자릿수까지 각각 $9 \times i \times 10 ^ {i-1}$ 더해준다. 3. 마지막으로 자리수 $N$에 해당하는 길이는 입력받은 수(tmp)보다 자리수가 하나 작은 가장 큰 수를 빼준 수에서 $N$만큼 곱해준 걸 결괏값(result)에 더해준다. 소스 코드 #include us..