백준 38

[백준 C++] 1065번 - 한수

1065번 - 한수 입력받은 N이 100보다 작을 경우(한 자릿수, 두 자릿수) 모두 등차수열을 만족하기 때문에 N을 출력 N이 100보다 크거나 같을 경우 한수의 개수를 99부터 시작하고 등차수열을 만족하는 경우 한수의 개수를 하나씩 증가시킴 등차수열인지 구분하는 과정에서 N을 string 타입으로 변환하여 십의 자릿수에서 일의 자릿수를 뺀 값과 백의 자릿수에서 십의 자릿수를 뺀 값이 일치할 경우 한수의 개수를 1씩 증가시킴 N이 1000일 경우 일의 자릿수, 십의 자릿수, 백의 자릿수만 비교해도 등차수열을 만족하지 않기에 고려하지 않아도 됨 #include #include using namespace std; int main() { int N, cnt = 0; cin >> N; string str; ..

Baekjoon 2022.02.19

[백준 C++] 4344번 - 평균은 넘겠지

4344번 - 평균은 넘겠지 테스트 케이스 수와 학생 수를 입력받고 for문을 사용하여 학생 점수 입력받기 vector를 사용하여 학생 수만큼 각각의 점수 입력받기 평균을 구해서 평균을 넘는 학생 수를 확인 평균을 넘는 학생 수를 전체 학생 수로 나눠 비율 확인 평균을 넘는 학생 수의 비율을 소수점 셋째 자리까지 출력 #include #include using namespace std; int main() { int C; //테스트 케이스 수 cin >> C; int num, sum = 0, avg, cnt = 0; for (int i = 0; i > num; //학생 수 vector v(num); for (int j = 0; j > v[j..

Baekjoon 2022.02.17

[백준 C++] 4949번 - 균형잡힌 세상

4949번 - 균형 잡힌 세상 string 타입으로 문자열 선언 while문을 사용하여 "."이 입력될 경우를 반복문 탈출 valance 함수를 구현하여 ()와 []가 짝이 맞을 경우와 맞기 않을 경우를 체크하여 빈 스택인지 아닌지를 반환 빈 스택일 경우 yes를 출력하고, 빈 스택이 아닐 경우 no를 출력함. #include #include #include using namespace std; int valance(string exp) { int len = exp.length(); stack v; for (int i = 0; i < len; i++) { if (exp[i] == '(' || exp[i] == '[') { v.push(exp[i]); } else if (exp[i] == ')') { if..

Baekjoon 2022.02.07

[백준 C, C++] 2161번 - 카드1(링크드 리스트)

2161번 - 카드1 구조체 Node 선언 (입력받은 데이터: data, 노드 사이를 연결: next) 구조체 포인터 변수 선언(head, tail, cur, newNode) 동적 할당을 통해 노드 생성 노드에 데이터를 저장 (첫 번째 담긴 데이터일 경우 다음 연결은 NULL) if-else문을 사용하여 head가 NULL일 경우에는 newNode를 head에 저장하고, 아닐 경우 tail의 next노드에 newNode를 저장 주어진 데이터를 노드에 저장하고 모두 연결이 끝났다면 문제의 조건에 맞게 코드를 생성(while문 참고) [C언어] #include #include typedef struct _node { int data; struct _node* next; } Node; int main() { ..

Baekjoon 2022.01.28

[백준 C++] 9095번 - 1, 2, 3 더하기

9095번 - 1, 2, 3 더하기 하나씩 경우의 수를 찾기에는 n이 10일 때 274개의 경우의 수를 찾아야 하기에 규칙을 찾는 방법을 택했습니다. n = 1일 때, 1가지 방법 존재 (1) n = 2일 때, 2가지 방법 존재 (1+1, 2) n = 3일 때, 4가지 방법 존재 (1+1+1, 1+2, 2+1, 3) n = 4일 때, 7가지 방법 존재 (1+1+1+1, 1+1+2, 1+2+1, 2+1+1, 2+2, 3+1, 1+3) 이쯤 되면 하나의 규칙이 보입니다. n-1의 방법, n-2의 방법, n-3의 방법의 합이 n이 4일 때 방법의 수라는 것을 알 수 있습니다. 하나 더 해보겠습니다. n = 5일 때, 13가지 방법 존재 (1+1+1+1+1, 1+1+1+2, 1+1+2+1, 1+2+1+1, 2+..

Baekjoon 2022.01.13

[백준 C++] 1152번 - 단어의 개수

1152번 - 단어의 개수 * 문장이 공백으로 시작하든 공백으로 끝나든 상관없이 단어의 개수만 세는 게 중요함. 방법 1. vector사용 메인 함수와 split함수(vector타입의 함수)로 나눠서 구현 * split함수 매개 변수로 입력받은 문자열(input)과 단어 사이를 구분해줄 문자(part)를 사용한다. stringstream은 공백과 '\n'을 제외하고 자료형에 맞는 문자열을 빼오는 역할을 한다. 공백에 따라 분리된 ss를 tmp에 대입하고, tmp를 result에 붙여 넣는 과정을 반복한다. 완성된 result를 리턴한다. * main 함수 string 타입으로 문자열을 입력받는다. split함수를 호출하여 결과를 output 배열에 저장한다. for문을 사용하여 해당 output 배열에 ..

Baekjoon 2022.01.09

[백준 C++] 4673번 - 셀프 넘버

4673번 - 셀프 넘버 크기가 10000인 int 배열 선언하기 for문을 사용하여 셀프 넘버 찾기 셀프 넘버의 배열 값은 0, 셀프 넘버가 아닌 배열 값은 1 배열 값이 0인(셀프 넘버)만 출력 #include using namespace std; int main() { int num[10000] = { 1, }; int tmp; for (int i = 1; i < 10000; i++) { if (i < 10) { num[i + i] = 1; } else if (i < 100) { num[i + i / 10 + i % 10] = 1; } else if (i < 1000) { num[i + i / 100 + i % 100 / 10 + i % 100 % 10] = 1; } else if (i < 1000..

Baekjoon 2022.01.06

[백준 C++] 10809번 - 알파벳 찾기

10809번 - 알파벳 찾기 문자열 입력받기(string 타입) alpha 배열(알파벳 개수만큼) 선언 후, -1로 초기화 'str[i] - 97'를 alpha배열의 인덱스로 사용하여 몇 번째 자리에 해당 알파벳이 존재하는지 배열 값으로 대입 만약 알파벳이 중복으로 존재할 경우 먼저 확인된 자리 번호를 기억하도록 함 alpha배열 출력 #include using namespace std; int main() { string str; cin >> str; int alpha[26] = {}; for (int i = 0; i < 26; i++) { alpha[i] = -1; } for (int i = 0; i < str.length(); i++) { if (alpha[str[i] - 97] != -1) con..

Baekjoon 2022.01.03