구현 156

[백준 2446] 별 찍기 - 9 [C]

풀이 행의 개수는 2N - 1개, 열의 공백과 별의 개수는 2N-1개에서 N개까지 한 개씩 감소했다가, 다시 2N-1개까지 한 개씩 증가한다. 때문에, 열의 범위를 5 ~ 2N - 1로 지정했다. 별을 출력한 후에는 공백을 출력하지 않고, 개행을 해야된다는 점을 유의하자. 소스코드 #include #include int main(){ int N; scanf("%d", &N); for (int i = -N + 1; i < N; i++){ for (int j = 0; j < N + abs(i); j++) putchar(j + 1 < N-abs(i) ? 32 : '*'); putchar(10); } } 출처 2446번: 별 찍기 - 9 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다. www.acmi..

[백준 2445] 별 찍기 - 8 [C]

풀이 2N-1개의 행에 2N개의 열으로 구성되며, 별과 공백의 개수가 증가/감소를 하기 때문에, 음수와 양수를 사용해 문제를 해결했다. 때문에 열에서는 0을 사용하지 않기 위해 -1 다음에는 1을 사용할 수 있도록 반복문의 증감식을 설정했다. 소스코드 #include #include int main(){ int N; scanf("%d", &N); for (int i = -N +1; i abs(i) ? '*' : 32); putchar(10); } } 출처 2445번: 별 찍기 - 8 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다. www.acmicpc.net

[백준 2444] 별 찍기 - 7 [C]

풀이 공백의 개수는 N-1개부터 0개까지 한 개씩 줄었다가, 다시 N-1개까지 한 개씩 증가한다. 공백과 별의 개수는 N개부터 2N-1개까지 한 개씩 증가했다가, 다시 N개까지 감소한다. 소스코드 #include #include int main() { int N; scanf("%d", &N); for (int i = -N + 1; i < N; i++){ for (int j = 0; j < 2*N -abs(i) -1; j++) putchar(j < abs(i) ? 32 : '*'); putchar(10); } } 출처 2444번: 별 찍기 - 7 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다. www.acmicpc.net

[백준 2443] 별 찍기 - 6 [C]

풀이 공백은 0개부터 N-1개까지 한 개씩 증가하고, 공백과 별의 전체 개수는 2N-1에서 한 개씩 줄어든다. 소스코드 #include int main() { int N; scanf("%d", &N); for (int i = 0; i < N; i++){ for (int j = 0; j < 2*N -1 -i; j++) putchar( j < i ? 32 : '*'); putchar(10); } } 출처 2443번: 별 찍기 - 6 첫째 줄에는 별 2×N-1개, 둘째 줄에는 별 2×N-3개, ..., N번째 줄에는 별 1개를 찍는 문제 별은 가운데를 기준으로 대칭이어야 한다. www.acmicpc.net

[백준 2442] 별 찍기 - 5 [C]

풀이 공백의 개수는 N-1개부터 한 개씩 감소하고, 각 행별 공백과 별의 개수는 한개씩 증가한다. 또한, 별의 개수는 2개씩 증가한다. 소스코드 #include int main() { int N; scanf("%d", &N); for (int i = 0; i < N; i++){ for (int j = 0; j < N + i; j++) putchar(j < N-i-1 ? 32 : '*'); putchar(10); } } 출처 2442번: 별 찍기 - 5 첫째 줄에는 별 1개, 둘째 줄에는 별 3개, ..., N번째 줄에는 별 2×N-1개를 찍는 문제 별은 가운데를 기준으로 대칭이어야 한다. www.acmicpc.net

[백준 5622] 다이얼 [C]

풀이 각 숫자의 시작 문자를 문자열로 구성하고, 문자열의 아스키코드값을 비교해 늘어난 index만큼 대기시간을 계산했다. 소스코드 #include int main(){ char num[16]; int result = 0; scanf("%s", num); for (int i = 0; i < num[i] != '\0'; i++) for (char ch = num[i], wait = 0; ; wait++){ if (ch < "@@ADGJMPTW["[wait]) break; result += 1; } printf("%d", result); } 출처 5622번: 다이얼 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다. www.acmicpc.net

[백준 4673] 셀프 넘버 [C]

풀이 생성자가 없으면, d(n)을 형성하지 못하므로, d(n)이 아닌 수들이 셀프 넘버라고 볼 수 있다. 소스코드 #include #define MAX 10001 int n_selfNum(int n){ int result = n; for (; n > 0; n /= 10) result += n%10; return result; } int main(){ int arr[MAX] = {0, }; for (int i = 1; i < MAX; i++){ int n = n_selfNum(i); n < MAX && (arr[n] = 1); } for (int i = 1; i < MAX; i++) !arr[i] && printf("%d\n", i); } 출처 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D..