<1> 25083번 새싹
printf() 함수에서, 큰따옴표(쌍따옴표)/ 따옴표/ 역슬래시 출력 방법
: 출력하려는 부분 바로 앞에 백슬래시(\) 기호를 하나 붙인다.

문제
아래 예제와 같이 새싹을 출력하시오.
입력
입력은 없다.
출력
새싹을 출력한다.
예제 출력 1 복사
,r'"7
r`-_ ,' ,/
\. ". L_r'
`~\/
|
|
#define _CRT_SECUER_NO_WARNINGS
#include <stdio.h>
int main() {
printf(" ,r\'\"7\n");
printf("r`-_ ,' ,/\n");
printf(" \\. \". L_r\'\n");
printf(" `~\\/\n");
printf(" |\n");
printf(" |\n");
return 0;
}
<2> 3003번 킹, 퀸, 룩, 비숍, 나이트, 폰
문제
동혁이는 오래된 창고를 뒤지다가 낡은 체스판과 피스를 발견했다.
체스판의 먼지를 털어내고 걸레로 닦으니 그럭저럭 쓸만한 체스판이 되었다. 하지만, 검정색 피스는 모두 있었으나, 흰색 피스는 개수가 올바르지 않았다.
체스는 총 16개의 피스를 사용하며, 킹 1개, 퀸 1개, 룩 2개, 비숍 2개, 나이트 2개, 폰 8개로 구성되어 있다.
동혁이가 발견한 흰색 피스의 개수가 주어졌을 때, 몇 개를 더하거나 빼야 올바른 세트가 되는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 이 값은 0보다 크거나 같고 10보다 작거나 같은 정수이다.
출력
첫째 줄에 입력에서 주어진 순서대로 몇 개의 피스를 더하거나 빼야 되는지를 출력한다. 만약 수가 양수라면 동혁이는 그 개수 만큼 피스를 더해야 하는 것이고, 음수라면 제거해야 하는 것이다.
예제 입력 1
0 1 2 2 2 7
예제 출력 1
1 0 0 0 0 1
#define _CRT_SECUER_NO_WARNINGS
#include <stdio.h>
int main() {
int a, b, c, d, e, f;
scanf("%d %d %d %d %d %d", &a, &b, &c, &d, &e, &f);
printf("%d %d %d %d %d %d", 1 - a, 1 - b, 2 - c, 2 - d, 2 - e, 8 - f);
return 0;
}
<3> 2444번 별 찍기 - 7
문제
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
입력
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력
첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.
예제 입력 1 복사
5
예제 출력 1 복사
*
***
*****
*******
*********
*******
*****
***
*
#define _CRT_SECUER_NO_WARNINGS
#include <stdio.h>
int main() {
int a, k, b, c, d, e, f;
scanf("%d", &a);
for (int i = 1; i <= a; i++) {
for (k = 0; k <= (a-1) - i; k++) {
printf(" ");
}
for (b = 0; b < (2*i)-1; b++) {
printf("*");
}
printf("\n");
}
for (int i = (a - 1); i >= 1; i--) {
for (d = (a - 1) - i; d >= 0; d--) {
printf(" ");
}
for (e = (2 * i) - 1; e >0 ; e--) {
printf("*");
}
printf("\n");
}
}
<4> 10988번 팰린드롬인지 확인하기
문제
알파벳 소문자로만 이루어진 단어가 주어진다. 이때, 이 단어가 팰린드롬인지 아닌지 확인하는 프로그램을 작성하시오.
팰린드롬이란 앞으로 읽을 때와 거꾸로 읽을 때 똑같은 단어를 말한다.
level, noon은 팰린드롬이고, baekjoon, online, judge는 팰린드롬이 아니다.
입력
첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다.
출력
첫째 줄에 팰린드롬이면 1, 아니면 0을 출력한다.
예제 입력 1
level
예제 출력 1
1
예제 입력 2
baekjoon
예제 출력 2
0
#define _CRT_SECUER_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main() {
char s[100];
int check = 0;
scanf("%s", s);
int i = strlen(s);
for (int k = 0; k <= (i - 1) / 2; k++) {
if (s[k] != s[i - 1 - k]) {
printf("0\n");
check = 1;
break;
}
else continue;
}
if (check == 0) printf("1\n");
return 0;
}
<5> 1157번 단어 공부 (*오래걸림)
문제
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
입력
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
출력
첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
예제 입력 1
Mississipi
예제 출력 1
?
예제 입력 2
zZa
예제 출력 2
Z
예제 입력 3
z
예제 출력 3
Z
예제 입력 4
baaa
예제 출력 4
A
https://steemit.com/kr-dev/@codingman/c9--1557533414147
[C언어-기초실습-9] 입력 된 문자열을 대소문자로 변환하기 — Steemit
[C언어-기초실습-9] 입력 된 문자열을 대소문자로 변환하기 오늘은 문자열 놀이로 대소문자를 서로 교차 변환을 하는 실습을 하도록 하겠습니다. 대소문자 변환을 알기 위해서는 알파벳의 아스
steemit.com
#include <stdio.h>
#include <string.h>
char str[1000000];
int main(void) {
int c;
scanf("%s", str);
int L = strlen(str);
char ans;
// 문자열 전체에서 대문자 > 소문자로 변경
for (int k = 0; k < L; k++) {
if (str[k] >= 'A' && str[k] <= 'Z') str[k] = str[k] + 32;
}
// 문자열을 a - z 체크하고 count++
// 만약에 이전 count보다 크면 그 count 값과 i 값 저장(d, c) > 출력
int d = 0;
for (int i = 'a'; i <= 'z'; i++) {
int count = 0;
for (int p = 0; p < L; p++) {
if (i == str[p]) count++;
}
if (count > 0) {
if (count == d) {
ans = '?';
}
else if (count > d) {
d = count;
c = i;
ans = c - 32;
}
}
}
printf("%c", ans);
return 0;
}
"가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력" 에서 오래 걸렸다.
나머지 코드는 다 짰을 때, ? 를 언제 출력해야하고 ? 가 출력되면 break 가 된다도 아니고
a > z 까지 모두 실행하였을 때 제일 큰 수가 2개일 때 ? 가 출력 되어야 함
>> ? 가 출력이 되면 가장 많이 사용된 알파벳은 출력되면 안된다.
결국 ? 또는 답(가장 많이 사용된 알파벳) 이 출력되고 싶은 것! >> 그럴 땐, 위의 코드처럼 ans 활용하자!
>>check = 0 > check = 1 처럼 printf(" ", ans)하면 ? 또는 답을 출력시킬 수 있다.
if 문 안에 printf()문을 쓰지 말고, if 문 안에서 ans을 설정하자.
<6> 2941번 크로아티아 알파벳
문제
예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.
크로아티아 알파벳변경č | c= |
ć | c- |
dž | dz= |
đ | d- |
lj | lj |
nj | nj |
š | s= |
ž | z= |
예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.
입력
첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다.
단어는 크로아티아 알파벳으로 이루어져 있다. 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다.
출력
입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
예제 입력 1 복사
ljes=njak
예제 출력 1 복사
6
#include <stdio.h>
#include <string.h>
int main(void) {
int i;
char str[1000];
scanf("%s", str);
int cnt = 0;
for (i = 0; i < strlen(str); i++) {
if ((str[i] == 's')||(str[i] == 'z')) {
if (str[i + 1] == '=') {
i = i+1;
cnt++;
}
else cnt++;
}
else if (str[i] == 'c') {
if (str[i + 1] == '-') {
i = i+1;
cnt++;
}
else if (str[i + 1] == '=') {
i = i + 1;
cnt++;
}
else cnt++;
}
else if ((str[i] == 'l') || (str[i] == 'n')) {
if (str[i + 1] == 'j') {
i = i+1;
cnt++;
}
else cnt++;
}
else if (str[i] == 'd') {
if (str[i + 1] == 'z') {
if (str[i + 2] == '=') {
i = i+2;
cnt++;
}
else {
cnt++;
}
}
else if (str[i + 1] == '-') {
i = i + 1;
cnt++;
}
else cnt++;
}
else cnt++;
}
printf("%d", cnt);
return 0;
}
< 참 고 >
** 두 개의 문자열이 같은지 비교하고 싶다면 strcmp, strncmp함수
strcmp() : 비교대상 문자열인 string1 string2이 같은지 비교
두 문자열이 같으면 0을, 같지 않으면 0이 아닌 값을 반환합니다.
int compare1 = strcmp(s1, s2);
strncmp() : 문자열을 비교한다는 것에서 일정 길이만큼 비교할 수 있는 옵션이 추가된 함수
두 문자열의 원하는 길이만큼 같으면 0을, 같지 않으면 0이 아닌 값을 반환합니다.
int compare4 = strncmp(s1, s3, 2);
https://coding-factory.tistory.com/594
[C언어/C++] 문자열 비교 strcmp, strncmp 함수 사용법 & 예제 + 구현
두 개의 문자열이 같은지 비교하고 싶다면 strcmp, strncmp함수를 사용하면 됩니다. strcmp함수는 비교대상 문자열인 string1 string2이 같은지 비교합니다. strncmp는 문자열을 비교한다는 것에서 일정 길
coding-factory.tistory.com
** 문자열은 strcat 함수를 사용하여 서로 붙일 수 있으며 함수 이름은 문자열을 연결시키다(string concatenate)
strcat(s2, s1)과 같이 strcat 함수에 최종 결과가 나올 문자열과 붙일 문자열을 넣습니다.
이렇게 하면 s2 뒤에 s1를 붙여서 Helloworld가 나옵니다.
https://coding-factory.tistory.com/593
[C언어,C++] 문자열 합치기 strcat, strncat 함수 사용법 & 예제 +구현
strcat와 strncat 함수는 두 문자열을 이어 붙여주는 기능을 합니다. 첫 번째 주소에 저장된 문자열에 두 번째 주소에 저장된 문자열을 붙여서 반환합니다. 두 함수는 문자열을 이어 붙인다는 형태
coding-factory.tistory.com
<7> 1316번 그룹 단어 체커
문제
그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다.
단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 단어의 개수 N이 들어온다. N은 100보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 단어가 들어온다. 단어는 알파벳 소문자로만 되어있고 중복되지 않으며, 길이는 최대 100이다.
출력
첫째 줄에 그룹 단어의 개수를 출력한다.
예제 입력 1
3
happy
new
year
예제 출력 1
3
*참고* 함수의 선언
맨 위에 int group(int);
함수 : int group(int n) { }
https://dream-and-develop.tistory.com/6
[C언어] 함수(function)의 정의, 선언, 호출 / 함수의 매개변수, 반환값, 함수 원형
함수의 종류에는 두 가지가 있다. 사용자가 직접 정의하여 만드는 '사용자 정의 함수', 그리고 자주 사용되어 프로그래머들이 미리 만들어놓은, 컴파일러에서 제공되는 '라이브러리 함수'가 있
dream-and-develop.tistory.com
#include <stdio.h>
#include <string.h>
int main(void) {
int n;
char str[110];
scanf("%d", &n);
int cou = 0;
for (int i = 0; i < n; i++) {
scanf("%s", str);
int count = 0;
//단어에 들어간 알파벳 개수 - 1 (= 바뀐 횟수)
for (int i = 'a'; i <= 'z'; i++) {
int cnt = 0;
for (int k = 0; k < strlen(str); k++) {
if (i == str[k]) cnt = 1;
}
if (cnt == 1) count++;
}
int alpa = count - 1;
//바뀐 횟수
int swch = 0;
for (int k = 0; k < strlen(str)-1; k++) {
if (str[k] != str[k + 1]) {
swch++;
}
}
if (alpa == swch) cou++; }
printf("%d", cou);
return 0;
}
<8> 25206번 너의 평점은
문제
인하대학교 컴퓨터공학과를 졸업하기 위해서는, 전공평점이 3.3 이상이거나 졸업고사를 통과해야 한다. 그런데 아뿔싸, 치훈이는 깜빡하고 졸업고사를 응시하지 않았다는 사실을 깨달았다!
치훈이의 전공평점을 계산해주는 프로그램을 작성해보자.
전공평점은 전공과목별 (학점 × 과목평점)의 합을 학점의 총합으로 나눈 값이다.
인하대학교 컴퓨터공학과의 등급에 따른 과목평점은 다음 표와 같다.
A+ | 4.5 |
A0 | 4.0 |
B+ | 3.5 |
B0 | 3.0 |
C+ | 2.5 |
C0 | 2.0 |
D+ | 1.5 |
D0 | 1.0 |
F | 0.0 |
P/F 과목의 경우 등급이 P또는 F로 표시되는데, 등급이 P인 과목은 계산에서 제외해야 한다.
과연 치훈이는 무사히 졸업할 수 있을까?
입력
20줄에 걸쳐 치훈이가 수강한 전공과목의 과목명, 학점, 등급이 공백으로 구분되어 주어진다.
출력
치훈이의 전공평점을 출력한다.
정답과의 절대오차 또는 상대오차가 10−4 이하이면 정답으로 인정한다.
제한
- 1 ≤ 과목명의 길이 ≤ 50
- 과목명은 알파벳 대소문자 또는 숫자로만 이루어져 있으며, 띄어쓰기 없이 주어진다. 입력으로 주어지는 모든 과목명은 서로 다르다.
- 학점은 1.0,2.0,3.0,4.0중 하나이다.
- 등급은 A+,A0,B+,B0,C+,C0,D+,D0,F,P중 하나이다.
- 적어도 한 과목은 등급이 P가 아님이 보장된다.
예제 입력 1
ObjectOrientedProgramming1 3.0 A+
IntroductiontoComputerEngineering 3.0 A+
ObjectOrientedProgramming2 3.0 A0
CreativeComputerEngineeringDesign 3.0 A+
AssemblyLanguage 3.0 A+
InternetProgramming 3.0 B0
ApplicationProgramminginJava 3.0 A0
SystemProgramming 3.0 B0
OperatingSystem 3.0 B0
WirelessCommunicationsandNetworking 3.0 C+
LogicCircuits 3.0 B0
DataStructure 4.0 A+
MicroprocessorApplication 3.0 B+
EmbeddedSoftware 3.0 C0
ComputerSecurity 3.0 D+
Database 3.0 C+
Algorithm 3.0 B0
CapstoneDesigninCSE 3.0 B+
CompilerDesign 3.0 D0
ProblemSolving 4.0 P
예제 출력 1
3.284483
#include <stdio.h>
#include <string.h>
int main(void) {
char str[100];
char grade[10];
float n;
int cnt = 0;
int result = 0;
int sum = 0;
for (int i = 0; i < 20; i++) {
scanf("%s %f %s", str, &n, grade);
if (grade[0] != 'P') {
if (grade[0] == 'A') {
if (grade[1] == '+') {
result = n * 45;
}
else if (grade[1] == '0') {
result = n * 40;
}
}
if (grade[0] == 'B') {
if (grade[1] == '+') {
result = n * 35;
}
else if (grade[1] == '0') {
result = n * 30;
}
}
if (grade[0] == 'C') {
if (grade[1] == '+') {
result = n * 25;
}
else if (grade[1] == '0') {
result = n * 20;
}
}
if (grade[0] == 'D') {
if (grade[1] == '+') {
result = n * 15;
}
else if (grade[1] == '0') {
result = n * 10;
}
}
if (grade[0] == 'F') result = 0;
cnt += n;
sum += result; }
}
float rr = (double)sum / (double)cnt / 10;
printf("%f\n", rr);
return 0;
}
'AI HW study > Baekjoon' 카테고리의 다른 글
백준을 1년 반만에 다시 풀어보자! (0) | 2025.01.17 |
---|---|
백준 8단계: 일반 수학 1 (0) | 2023.07.20 |
백준 9단계: 약수, 배수와 소수 (0) | 2023.07.18 |
백준 5단계 문자열 (0) | 2023.07.15 |
백준 5단계 문자열 개념 정리 (0) | 2023.07.15 |