728x90

분류 전체보기 636

백준] 1138 - 한 줄로 서기

시간 제한 : 2초메모리 제한 : 128MB 입력첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다 크거나 같고, N-i-1보다 작거나 같다. 출력첫째 줄에 줄을 선 순서대로 키를 출력한다. 소스코드 #include using namespace std; int main(void) { int n; int arr[10], ans[11] = { 0, }; cin >> n; for (int i = 0; i > arr[i]; ans[arr[0] + 1] = 1; for (int i = 1; i < n; i++) { int cnt = 0; fo..

백준] 1812 - 사탕

시간 제한 : 2초메모리 제한 : 128MB 입력첫째 줄에 N(3≤N≤999, N은 홀수)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 1번 학생과 2번 학생이 가지고 있는 사탕의 수의 합, 2번 학생과 3번 학생이 가지고 있는 사탕의 수의 합, …, N-1번 학생과 N번 학생이 가지고 있는 사탕의 수의 합, 마지막으로 N번 학생과 1번 학생의 가지고 있는 사탕의 수의 합이 순서대로 주어진다. 출력첫째 줄부터 N개의 줄에 걸쳐 1번 학생이 가지고 있는 사탕의 수, 2번 학생이 가지고 있는 사탕의 수, …, N번 학생이 가지고 있는 사탕의 수를 순서대로 출력한다. 출력하는 수는 음이 아닌 정수들이어야 하며, 항상 답이 존재하는 경우만이 입력으로 주어진다고 가정해도 좋다. 소스코드 #include using ..

백준] 1439 - 뒤집기

시간 제한 : 2초메모리 제한 : 128MB 입력첫째 줄에 문자열 S가 주어진다. S는 백만보다 작은 길이 출력첫째 줄에 다솜이가 해야하는 행동의 최소값을 출력한다. 소스코드 #include #include using namespace std; int main(void) { string s; int len, zeropart = 0, onepart = 0, cnt = 0; cin >> s; len = s.length(); if (s[0] == '0') zeropart = 1; else onepart = 1; for (int i = 1; i < len; i++) { if (s[i] != s[i - 1]) { if (s[i] == '0') zeropart++; else onepart++; } } cout

백준] 1531 - 투명

시간 제한 : 2초메모리 제한 : 128MB 입력첫째 줄에 N과 M이 주어진다. N은 0보다 크거나 같고, 50보다 작거나 같다. M은 0보다 크거나 같고, 50보다 작거나 같다. 둘째 줄부터 N개의 줄에 종이의 좌표가 주어진다. 왼쪽 아래 모서리의 x, y좌표, 오른쪽 위 모서리의 x, y좌표 순으로 주어진다. 모든 좌표는 100보다 작거나 같은 자연수이다. 출력첫째 줄에 정답을 출력한다. 소스코드 #include using namespace std; int main(void) { int arr[101][101] = { 0, }; int n, m, x1, y1, x2, y2, sum = 0; cin >> n >> m; for (int i = 0; i > x1 >> y1 >..

백준] 1855 - 암호

시간 제한 : 2초메모리 제한 : 128MB 입력열의 개수 K(1≤K≤20)가 주어지고 두 번째 줄에는 암호화 된 문자열(모두 영소문자)이 주어진다. (문자열의 길이는 200 이하이며 K의 배수이다.) 출력첫 줄에 원래의 문자열을 출력한다.. 소스코드 #include #include #include using namespace std; int main(void) { int k, len; string crypt; char arr[200][200]; cin >> k >> crypt; len = crypt.length(); for (int i = 0; i < len/k; i++) { if (i % 2 == 0) for (int j = 0; j < k; j++) arr[i][j] = crypt[i*k + j];..

C] fopen, freopen, fdopen를 사용하는 파일 접근 정리

아무래도 C/C++에서 파일 입출력을 사용했던 게 정보올림피아드 대회 문제 풀 때가 마지막이었던 것 같다. 그 당시에는 C++의 fstream이 더 편해서 그걸 이용했고, C를 사용할 때만 반 강제적으로 C의 fopen을 사용하곤 했는데 freopen을 알고 나니까 freopen과 fopen, 덤으로 fdopen에 대해서 조금 더 알고 싶어졌다. freopen은 온라인 저지를 이용한 알고리즘 문제를 풀 때 많이 사용한다. 입력할 데이터가 많으면, 하나하나 치는 것이 다 일이기 때문. 이 때는 입력 데이터를 파일로 만들어서 freopen으로 스트림을 변경시켜주기만 하면 scanf나 printf를 변경하지 않고도 파일입출력을 사용할 수 있어 편리하다.(물론 어지간한 크기의 데이터가 아니면 직접 치는 편이다...

C#] Parallel 클래스를 이용한 병렬 프로그래밍

2010년 이후로 줄곧 멀티 코어 보급률이 빠르게 늘어, 현 시점에서는 보급형 라인업에도 기본적으로 듀얼 코어가 탑재되는 시점에서, 다수의 코어를 활용하기 위해 .NET Framework 4.0에 추가된 개념. 병렬 루프에 관련한 메서드들을 제공한다. 이것을 이용해서 다수의 데이터를 병렬 처리하거나, 방대한 작업을 병렬 처리하는 것이 가능하다. Parallel.For(), Parallel.Foreach()를 이용해서 병렬로 분할 처리하는 기능을 사용할 수 있으며 병렬 처리를 하는 경우 두 가지 특징이 있다. 단일 스레드로 처리하는 경우보다 더 빠른 처리가 가능함.방대한 양의 데이터를 처리하는 경우, 다른 스레드에서 변경되는 값에 영향을 받지 않는다면 이 방법을 쓰는게 순차 처리하는 경우보다 빠른 시간 내..

백준] 2966 - 찍기(COCI 2008/2009)

시간 제한 : 1초메모리 제한 : 128MB 입력첫째 줄에 필기시험의 문제의 수 N이 주어진다. (1 ≤ N ≤ 100)둘째 줄에는 시험의 정답이 주어진다. 출력첫째 줄에 가장 많은 문제를 맞춘 사람이몇 문제를 맞추었는지 출력한다.다음 줄에는 가장 많은 문제를 맞춘 사람의 아이디를 한 줄에 하나씩 출력한다. 상근이의 아이디는 Adrian, 창영이의 아이디는 Bruno, 현진이의 아이디는 Goran이다. 아이디 여러 개를 출력하는 경우에는 상근이, 창영이, 현진이 순서로 출력한다. 소스코드 #include #include using namespace std; int main(void) { int n, max = -1, len, ans[3] = { 0, }, meta[3][6] = { {0,1,2},{1,0..

백준] 2947 - 나무 조각(COCI 2008/2009)

시간 제한 : 1초메모리 제한 : 128MB 입력첫째 줄에 조각에 써 있는 수가 순서대로 주어진다. 숫자는 1보다 크거나 같고, 5보다 작거나 같으며, 중복되지 않는다. 처음 순서는 1, 2, 3, 4, 5가 아니다. 출력두 조각의 순서가 바뀔때 마다 조각의 순서를 출력한다. 소스코드 #include using namespace std; int main(void) { int arr[5]; for (int i = 0; i > arr[i]; for (int i = 0; i arr[j + 1]) { int tmp; tmp = arr[j]; arr[j] = arr[j + 1]; a..

백준] 3023 - 마술사 이민혁(COCI 2006/2007)

시간 제한 : 1초메모리 제한 : 128MB 입력첫째 줄에 왼쪽 위 부분의 행의 개수 R과 열의 개수 C가 주어진다. (1 ≤ R, C ≤ 50)다음 R개 줄에는 C개의 문자 '.' 또는 '#'가 주어진다.마지막 줄에는 에러의 위치 A와 B가 주어진다. (1 ≤ A ≤ 2R, 1 ≤ B ≤ 2C) 출력카드 뒷 면 전체 디자인을 총 2R개 줄에 걸쳐서 출력한다. 각 줄은 2C개의 문자로 이루어져 있어야 한다. 소스코드 #include #include #include using namespace std; int main(void) { int r, c, a, b; string parts[50]; string card[100]; cin >> r >> c; for (int i = 0; i < r; i++) cin..

728x90