The Way
백준 이전에 푼 것 1 본문
* 코드는 맨 아래에 있습니다
예전에 풀었던 백준 문제들을 한 번씩 검토해보았다.
최대한 원형 코드를 유지했다. 진짜로 초보 시절에 짠 코드도 있어 지저분할지도ㅎ
# 백준 1011번: Fly me to the Alpha Centauri
2n - 1회 이동할 때 최대 이동거리는 1 + ... + n + ... + 1
2n회 이동할 때 최대 이동 거리는 1 + ... + n + n + ... + 1
경계가 나뉘었으니 잘 사용하면 된다.
# 백준 1016번: 제곱 ㄴㄴ 수
범위가 상당히 애매하다.
100만 바로 위의 소수는 1000003인데, sqrt(1조 + 100만) = 1000000.5 정도라서 100만으로 봐도 전혀 무리가 없다. long long 다루는 데 주의.
# 백준 1021번: 회전하는 큐
상당히 난해한 문제라고 생각하는데 어떻게 잘 풀었는지 모르겠다.
알고리즘은 대충 왼쪽에 가까운지 / 오른쪽에 가까운지 보고
몇 칸 이동했는지에 따라 뒤 숫자들의 인덱스를 바꾸어주면 된다.
n=50이라 그나마 다행인 문제.
# 백준 1026번: 보물
힌트에 나온 것처럼 숫자의 순서를 물었으면 어려울 뻔 했는데,
값을 물어서 그냥 정렬 문제가 되었다.
# 백준 1032번: 명령 프롬프트
생략
# 백준 1037번: 약수
최소공배수를 구하면 간편하다.
소인수가 한 종류일 경우 최소공배수 * 소인수를 해주어야 한다.
* 최대공약수와 최소공배수를 간단히 구하는 코드
long long gcd(long long m, long long n) { while (true) { if (m > n) m %= n; else n %= m; if (m == 0 || n == 0) return m + n; } } long long lcm(long long m, long long n) return m * n / gcd(m, n);
상당히 아름답다.
# 백준 1065번: 한수
수를 집어넣었을 때 수가 한수인지 판별하는 코드를 만들었다.
입력이 작아서 괜찮은데, 입력이 커지면 첫 자리수에서 시작해 등차로 더해가도록 세는게 더 효율적일 듯.
# 백준 1074번: Z
재미있는 문제이다. 비트가 켜져있는지를 보고 적당히 더해주면 된다.
# 백준 1085번: 직사각형에서 탈출
# 백준 1100번: 하얀 칸
# 백준 1110번: 더하기 사이클
생략
# 백준 1149번: RGB거리
가장 일반적인 DP 문제
# 백준 1152번: 단어의 개수
띄어쓰기 갯수를 세면 된다고 생각하기 쉬운데 맨 앞이나 맨 뒤에 공백이 나올수도 있으니 신경써야 한다.