728x90
728x90

입출력 3

백준] 5692 - 팩토리얼 진법(ACM-ICPC Regionals)

시간 제한 : 1초메모리 제한 : 128MB 입력입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 최대 5자리인 팩토리얼 진법 숫자가 주어진다. 입력의 마지막 줄에는 0이 하나 주어진다. 출력각 테스트 케이스에 대해서, 입력으로 주어진 팩토리얼 진법 숫자를 10진법으로 읽은 값을 출력한다. 소스코드#include #include using namespace std; int main(void) { std::ios::sync_with_stdio(false); cin.tie(0); int arr[6] = { 0, 1, 2, 6, 24, 120 }; while (1) { string s; int len, sum = 0; cin >> s; if (s == "0"..

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

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

C,C++] cin/cout, scanf/printf

알고리즘 문제를 풀다 보면, Time Limit(시간 제한)에 대해서 신경 쓰지 않을 수가 없다.제한된 메모리에서 최대한 빠른 시간 내에 정확한 답을 찾는 것이 좋은 알고리즘이고,그렇지 못한 알고리즘은 TLE나 시간 초과 등을 이유로 답을 처리해주지 않는다. 입출력이 수천 번에 머무르면 시간 초과가 발생하면거의 대부분 알고리즘에 문제가 있지만,입출력이 수십만 개, 수백만 번에 이르면 이야기가 좀 다르다. 한 예를 들어서 설명을 해볼까 한다. https://www.acmicpc.net/problem/11004 백준 사이트의 11004번 : K번째 수라는 문제다.N개의 숫자들을 입력 받고 오름차순 정렬을 했을 때,K번째의 수를 출력하는 것이다. 문제는 되게 간단하다.입력 값이 5백만개에 이르며 숫자 중복도 ..

728x90