백준 34

백준_10926_??!

입력한 문자열 뒤에 ??! 만 붙여 출력하면 되는 간단한 문제입니다. 하지만 아래와 같이 코드를 작성하면 printf("%s??!",id); 이런 warning 이 나옵니다. stackoverflow를 살펴보니, ??! 은 \ 로 대체된다고 합니다. ??! 이외에도 다른 문자들도 있으니 주의해야 할 것 같습니다.. 어쩐지 문제가 너어무 쉽다 했네요.. ISO 646 character set(문자 모음)은 C의 모든 문자를 포함하고 있지 않으므로 \를 이용해야 한다고 합니다. 전체 코드) #include int main(void) { char id[51] = {0}; scanf("%s", id); printf("%s\?\?!\n", id); return 0; } trigraph에 대해 알아보기 위한 문제인..

백준/c 2024.04.23

백준_2798_블랙잭

문제설명) 자연수가 적힌 N장의 카드를 숫자가 보이도록 바닥에 놓고 M을 외친다. 플레이어는 M을 넘지 않으면서 M과 가장 가깝도록 3장의 카드를 고른다. N장의 카드에 써져있는 숫자가 주어졌을 때, 카드 3장의 합을 구하시오. 문제 풀기 전 생각) 100장 이하의 카드가 주어지므로, 배열과 반복문을 이용하여 풀면 괜찮을 것 같습니다. 풀이) N,M 을 입력받은 후 N만큼 배열을 입력받습니다. 그 후, 3중 for 문을 이용하여 M과 가장 가까우면서 가장 큰 값을 찾습니다. 이때, 카드의 합이 M을 넘으면 안되므로, 조건을 추가해줍니다. 또한 카드의 합이 M과 같아지면 더이상 탐색의 의미가 없으므로 그 값을 출력하고 즉시 종료합니다. 전체 코드) #include int main(void) { int N ..

백준/c 2024.04.22

백준_2292_벌집

문제 풀기 전 생각) 연속되는 숫자가 원형을 그리며 시계방향으로 회전하고 있으므로 규칙을 찾아 문제를 풀어야겠다는 생각을 했습니다. 1을 기준으로 직선을 그어보면, 1->5->15->31->53 (+4, +10, +16, +22) 1->7->19->37->61 (+6, +12, +18, +24) 보다시피 커지는 숫자가 6씩 증가하고 있습니다. 위 규칙을 이용해서, 입력받은 숫자에서 -6, -12, -18 .... 을 하며 몇 번 연산되었는지 세어보면 몇 번째 궤도에 위치해 있는지 구할 수 있을 것 같습니다. 풀이) N을 입력받아 규칙이 몇 번 사용되었는지를 확인하도록 프로그래밍합니다. 궤도가 올라갈수록 가장 작은 값과 가장 큰 값의 차이가 커지므로 이를 해결할 수 있도록 공식을 세웁니다. 1.규칙이 몇 ..

백준/c 2024.04.22

백준_2231_분해합

분해합의 개념) 어떤 자연수 N이 있을 때, N의 분해합은 N+각 자리수의 합입니다. 예를 들어, 198의 분해합은 198 + 1 + 9 + 8 = 216 입니다. 이때 198은 216의 생성자라고 합니다. 문제 풀기 전 생각) N이 백만 이하의 자연수이므로 1부터 하나하나 검사를 하기에는 시간이 너무 오래 걸릴 것 같습니다.(주어진 시간도 2초로 짧습니다.) 분해합은 생성자와 각 자리수를 모두 더한 것인데, 각 자리수가 될 수 있는 가장 큰 값은 9입니다. 그러므로, 분해합-자리수*9 를 한 수가 생성자 될 수 있는 최솟값이 되는 것이죠. 예를 들어 주어진 분해합이 256일 때 우리는 256 - 3*9 = 229 부터 검사를 하면 되는 것입니다. 풀이) 1. 먼저, 분해합을 입력받아 몇 자리수인지 구합..

백준/c 2024.04.22