# ps
BOJ - 2231 - 분해합
2231번: 분해합문제어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245
BOJ - 4673 - 셀프 넘버
4673번: 셀프 넘버문제셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다.양의 정수 n이 주어졌을 때,
BOJ - 2941 - 크로아티아 알파벳
1316번: 그룹 단어 체커문제그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지
Programmers - N개의 최소공배수
문제 링크최대공약수 및 최소공배수 문제두 자연수 A, B (A>B)A%B = N 에서, N이 0일 때 B가 최대공약수N이 0이 아니면 A->B , B->N 으로 변경 후 N이 0이 될 때 까지 반복두 자연수 A,B 의 최소공배수 : (A\*B)/gcd(A,B)
[BOJ] 인터넷 설치 in Python
문제 풀러 가기!전형적인 PS 풀이를 이용한 문제입니다.G1에 랭크되어 있는 만큼 알고리즘 짜기 힘들기도 하고 생각하기도 힘들다는 생각이 드네요.그래도 괜찮습니다. 차근차큰 생각하다보면, 답이 나올 것입니다.문제에서 설명하기를 1번은 인터넷이 무조건 연결되어 있고 N번
BOJ - 2941 - 크로아티아 알파벳
2941번: 크로아티아 알파벳문제예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가
C++로 문자열 split하기
코딩테스트를 합격하기 위해 여러 방법으로 공부를 하고 있다. 가장 빠른 학습 방법은 실력자들의 코드와 설명을 보는 것이었는데, 그 과정에서 알게된 몇 가지 팁들을 공유하고자 한다.gcc 계열의 컴파일러에는 미리 내장되어 있다. 우리가 ps를 하기 위해 사용할 법한 모든
[백준15649] N과 M (C++)
숫자가 이전에 나온 적 있는지 확인할 수 있도록 bool형 check 배열을 만들어두는 것이 핵심이다. 숫자를 배열에 넣을 때마다 check배열을 false로 만들어주고, 재귀함수를 돌린 후에는 다시 true로 바꾸어주어야 한다.
Programmers - 숫자의 표현
문제 링크A<=B 일때 A ~ B 까지의 합은 ('1 ~ B'의 합) - ('1 ~ A-1'의 합) 과 동일하다.1~x 까지의 합을 psumx 에 저장하고 A~B의 합을 psumB-psumA-1 로 계산하면 A ~ B의 합을 시간복잡도 O(1) 에 구할 수 있다.
[백준6064] 카잉 달력 (C++)
날짜 계산 문제와 비슷하다. 두 문제 모두 브루트포스를 이용해 해결할 수 있지만, 카잉 달력 문제는 시간초과를 고려해서 조금 다른 방식으로 풀어야 한다. num을 x로 초기화하고 m을 계속해서 더해주는 방식으로 원하는 답이 나올 때까지 검사했다.