전체 글

Let's try something first and experience it a lot.
· PS/백준
C++ #include using namespace std; int main(void) { unsigned int size; cin >> size; unsigned int temp; cin >> temp; /* N의 값은 합성수(약수의 개수가 3 이상)이며, N의 약수 1과 N을 제외한 약수들 중에서 가장 작은 값과 큰 값을 곱하면 N을 구할 수 있게 된다. */ unsigned int min = temp, max = temp; for (int i{ 1 }; i > temp; min = (min > temp) ? temp : min; max = (max < temp) ? temp : max; } cout
· PS/백준
C++ #include #include using namespace std; int main(void) { string word; cin >> word; int time = 0; for (int i{ 0 }; i = 26) time += 11; else if (temp >= 22) time += 10; else if (temp >= 19) time += 9; else if (temp >= 15) time += 8; else if (temp >= 12) time += 7; else if (temp >= 9) time += 6; else if (temp >= 6) time += 5..
· PS/백준
C++ 입력 받을 수 있는 정수 n의 최댓값이 40억이므로, 정수 n보다 크거나 같은 가장 작은 소수를 찾기 위해서는 n의 값을 1씩 늘려가면서 소수인지 아닌지를 판단해야 한다. 이때, 소수 판별 논리는 for문을 사용해서 나누어 떨어지는 수가 있으면 소수가 아닌수, 없으면 소수가 될 것이다. 여기서 주의할 점은 이 문제의 시간 복잡도가 O(N)이므로, n의 값을 1씩 늘려가면서 for문을 n까지 반복하는 것은 시간 초가가 발생하므로, for문의 범위를 n이 아닌 n의 제곱근 + 1까지 설정하는게 포인트이다. (여기 독자들 중에서 for문의 범위를 n / 2로 해서 틀린 사람도 있을 건데, 수의 값이 크다면 제곱근으로 설정해주면 시간 초과는 해결된다!) #include #include using name..
· PS/백준
C++ #include using namespace std; //가장 긴 변:max, 나머지 두 변:x, y void getRound(const int& max, const int& x, const int& y); int main(void) { int a, b, c; cin >> a >> b >> c; (a
· PS/백준
C++ #include #include using namespace std; int isPrime(const int& idx, vector& primes); int main(void) { int idx1, idx2; cin >> idx1 >> idx2; int sum = 0; vector primes; //idx1부터 idx2까지 범위에서 소수를 검증합니다. for (; idx1
· PS/백준
C++ 1.소수만 찾아서 카운트를 1씩 늘려주기만 하면 된다. 2.소수 찾는 알고리즘은 반복문을 사용하여, 나누어 떨어지는 수가 있으면 종료하고 0을 리턴한다. 3.이때, 반복문 for문의 크기는 입력된 수의 2분의 1의 크기이다. #include using namespace std; int isPrime(const int& number); int main(void) { int size; int result = 0; cin >> size; while(size--) { int temp; cin >> temp; result += isPrime(temp); } cout
· PS/백준
C++ //vector #include #include using namespace std; void isPerfectNumber(int& num); int main(void) { int temp; while (cin >> temp && temp != -1) isPerfectNumber(temp); return 0; } void isPerfectNumber(int& num) { int sum = 0; vector divisors; for (int i{ 1 }; i < num; i++) if (num % i == 0) { sum += i; divisors.push_back(i); } if (sum == num) { cout
· PS/백준
C++ //C-style #include #include using namespace std; int main(void) { char temp[101]; while (cin.getline(temp, sizeof(temp), '\n')) cout
· PS/백준
C++ 주의사항 1.배열의 크기를 지정할 때는 마지막 널문자('\0')를 고려해서 문자열 크기 + 1 만큼 반드시 지정해야한다. 예를 들면, 아래 코드 배열 numA는 세 자리수 123을 받는다면, 각 문자는 0번 인덱스에 1, 1번 인덱스에 2, 2번 인덱스에 3, 3번 인덱스에 널문자가 들어가게 되는 것이다. 널문자도 배열 요소이기 때문에, 꼭 고려해서 오버런(범위를 넘어간 배열)이 발생하지 않도록 해야한다. 2.각 자리수 비교는 각 문자를 서로 비교해서 크기 관계를 알 수 있다. 이때, 대소관계는 입력된 숫자로 되는게 아니라, 아스키 코드값을 걸쳐 변환된 정수로 비교되는 것을 이해 해야한다. 하지만, 아스키 코드에 저장된 정수는 아스키 코드값이 클수록 정수도 크기 때문에 사실 상관은 없다. //ch..
· PS/백준
C++ //built-in-array #include using namespace std; int main(void) { int numMax = 0; int numMaxIndex[2]; //최댓값이 되는 값과 위치를 입력받으면서 찾습니다. int temp; for (int i{ 0 }; i > temp; if (numMax
logicallaw
logicallaw