728x90

프로그래밍 410

백준] 3059 - 등장하지 않는 문자의 합

시간 제한 : 1초메모리 제한 : 128MB 입력입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 한 줄로 구성되어 있고, 문자열 S가 주어진다. S는 알파벳 대문자로만 구성되어 있고, 최대 1000글자이다. 출력각 테스트 데이터에 대해, 입력으로 주어진 문자열 S에 등장하지 않는 알파벳 대문자의 아스키 코드 값의 합을 한 줄에 하나씩 출력한다. 소스코드 #include #include using namespace std; int main(void) { int t, sum, len; cin >> t; while (t--) { string s; bool check[26] = { false, }; cin >> s; sum =..

백준] 9324 - 진짜 메시지(ACM-ICPC Regional)

시간 제한 : 1초메모리 제한 : 128MB 입력첫째 줄에 100 이하의 테스트 케이스의 개수가 주어진다. 그리고 각 테스트 케이스마다 대문자로만 이루어진 10만자 이하의 문자열 M이 한 줄에 주어진다. (검사해야할 메시지다) 출력테스트 케이스마다 메시지 M이 진짜 메시지면 “OK”를, 가짜 메시지면 “FAKE”를 한 줄에 출력한다. 소스코드 #include #include using namespace std; int main(void) { int t, len; bool real = true; cin >> t; while (t--) { string s; int arr[26] = { 0, }; cin >> s; len = s.length(), real = true; for (int i = 0; i < le..

백준] 3035 - 스캐너(COCI 2006/2007)

시간 제한 : 1초메모리 제한 : 128MB 입력첫째 줄에 R, C, ZR, ZC가 주어진다. R과 C는 1과 50 사이의 정수이고, ZR과 ZC는 1과 5 사이의 정수이다. 다음 R개 줄에는 신문 기사가 주어진다. 출력스캐너에 스캔된 결과를 총 R*ZR개 줄에 걸쳐서 C*ZC개 문자씩 출력한다. 소스코드 #include using namespace std; int main(void) { int r, c, zr, zc; char arr[51][51]; cin >> r >> c >> zr >> zc; for (int i = 0; i > arr[i]; for (int i = 0; i < r; i++) { for (int l = 0; l < zr; l++) { for (int j =..

백준] 5046 - 전국 대학생 프로그래밍 대회 동아리 연합(ACM-ICPC Regional)

시간 제한 : 1초메모리 제한 : 128MB 입력첫째 줄에 참가자의 수 1 ≤ N ≤ 200, 예산 1 ≤ B ≤ 500000, 호텔의 수 1 ≤ H ≤ 18, 고를 수 있는 주의 개수 1 ≤ W ≤ 13이 주어진다. 다음 줄부터 각 호텔의 정보가 주어지며, 호텔의 정보는 두 줄로 이루어져 있다. 첫번째 줄에는 그 호텔의 일인당 숙박비용 1 ≤ p ≤ 10000이 주어지고, 둘째 줄에는 i번째 주에 투숙 가능한 인원 0 ≤ a ≤ 1000이 주어진다. 출력첫째 줄에 대회를 개최할 수 있으면 최소 비용을 출력하고, 없으면 "stay home"을 출력한다. 소스코드 #include using namespace std; int main(void) { int n, b, h, w, min, p, sum = 0; ..

백준] 11048 - 이동하기

시간 제한 : 1초메모리 제한 : 256MB 입력첫째 줄에 미로의 크기 N, M이 주어진다. (1 ≤ N, M ≤ 1,000) 둘째 줄부터 N개 줄에는 총 M개의 숫자가 주어지며, r번째 줄의 c번째 수는 (r, c)에 놓여져 있는 사탕의 개수이다. 사탕의 개수는 0보다 크거나 같고, 100보다 작거나 같다. 출력첫째 줄에 준규가 (N, M)으로 이동할 때, 가져올 수 있는 사탕 개수를 출력한다. 소스코드 #include using namespace std; int arr[1001][1001], dp[1001][1001] = { 0, }; int main(void) { int n, m, max; cin >> n >> m; for (int i = 1; i arr[i][j]; for (int i = 1; i

백준] 1788 - 피보나치 수의 확장

시간 제한 : 2초메모리 제한 : 128MB 입력첫째 줄에 n이 주어진다. n은 절대값이 1,000,000을 넘지 않는 정수이다. 출력첫째 줄에 F(n)이 양수이면 1, 0이면 0, 음수이면 -1을 출력한다. 둘째 줄에는 F(n)의 절대값을 출력한다. 이 수가 충분히 커질 수 있으므로, 절대값을 1,000,000,000으로 나눈 나머지를 출력한다. 소스코드 #include using namespace std; long long dp[1000001] = { 0, 1, }; int main(void) { int n, k; cin >> n; if (n < 0) k = -n; else k = n; for (int i = 2; i 0) cout

백준] 2798 - 블랙잭(COCI 2011/2012)

시간 제한 : 1초메모리 제한 : 128MB 입력첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 써있는 수가 주어지며, 이 값은 100,000을 넘지 않는다. 출력첫째 줄에 M을 넘지 않으면서 M에 최대한 가까운 카드 3장의 합을 출력한다. 소스코드 #include using namespace std; int main(void) { int n, m, arr[100], ans = 0; cin >> n >> m; for (int i = 0; i > arr[i]; for (int i = 0; i < n - 2; i++) for (int j = i + 1; j < n - 1; j++) for (int k = j +..

코드포스(Codeforces) 첫 도전 후기

초등학생 때 정보올림피아드 이후로 알고리즘 대회와는 인연이 없다가 학부생이 되고 나서, 알고리즘 대회에 관심을 갖기 시작했다. 필자가 알아보고 또 참가해보니, 국내는 기업에서 주관하여 채용과 연계되는 형식의 대회들이라, 알고리즘 지식이 메인인 경우보다는 프로그래밍 사고, 경험, 개발 경험에 따른 이해도에 초점을 둔 것들이 많은 편이었다. 알고리즘을 이해하고 문제에 응용해보는 것을 백준 온라인 저지를 이용하는 편인데, 이들 문제를 풀면서 정기적으로 내 알고리즘 실력에 대해서 평가해보고 싶었다. 필자가 기존에 알고 있던 것은 구글 코드잼(CodeJam), 탑코더(TopCoder), 코드포스(Codeforces), 선데이코딩(SundayCoding)인데, 코드잼은 대회 기간이 아니고, 탑코더는 인터페이스도 어..

기타/넋두리 2018.01.22
728x90