23.08.22 계륵 일기

E woo·2023년 8월 22일

계륵 일기

목록 보기
20/31
post-thumbnail

파이썬 빠른 입출력

https://www.acmicpc.net/problem/2010

파이썬도 빠른 입출력이 존재하고 그냥 input() 을 사용할 경우 시간초과가 뜰 수 있다!!

import sys
N = int( sys.stdin.readline().rstrip() )

num = 0

for i in range(N):
    a = int( sys.stdin.readline().rstrip() )
    num += a - 1
print(num + 1)
    

아주 아주 큰 수

https://www.acmicpc.net/problem/2870

아주 아주 큰 수, 예를 들어 100자리를 가지는 수의 경우 int든 long long 이든 정수형의
자료형으로는 표현할 수가 없다.

따라서 문자열을 통해 표현해야 한다!!


문자열 비교 주의

https://www.acmicpc.net/problem/2870

숫자로 이루어진 문자열을 비교할 때는 주의할 점이 있다.

만약 문자열 a 는 123 이 문자열 b 는 20 이라고 했을때
당연히 숫자 비교로는 20 이 더 작아야하지만

문자열 비교는 앞에서부터 문자 하나씩 비교하기 때문에
123 에서 '1' 과 20 에서 '2' 를 먼저 비교해 더 작은 '1' 을 가진 123 이 작게 된다.

따라서 두 개의 숫자로 이루어진 문자열을 비교할 때는

  1. 두 문자열의 길이가 다르다면 긴 문자열이 더 큰 수
  2. 두 문자열의 길이가 같다면 그냥 비교

의 방법을 사용하면 된다.

  • vector 의 숫자로 이루어진 문자열들을 sort 하기 위한 커스텀 cmp
    sort(my_v.begin(), my_v.end(), 
        [](string &a, string &b)
        {
        	if (a.length() == b.length())
        	{
            	return a < b;
        	}
        return a.length() < b.length(); 
        }
    );

그리고 요즘 계속 C++ 입출력

    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

요놈 억까를 당하니 그냥 scanf 와 printf 를 쓰는 습관을 들이는게 좋을 것 같기도...

profile
뒘벼

0개의 댓글