일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 오리스프
- 알고리즘
- 로이커바트 숙소
- 피르스트 자전거
- 융프라우 스위스 패스
- 대학생
- 군대코딩
- C++ 공부
- Replit
- 시뮬레이션
- 그린델발트 캠핑장
- 24524
- C++
- openai api
- 군인
- 백준으로 c++ 공부하기
- 16236 c++
- porquerolles
- auto code review
- 그린델발트 자전거
- 1654
- C++ 공부하기
- 로이커바트
- 코딩
- 프랑스 남부 섬
- 백준으로 C++ 공부
- 백준 C++
- iles dHyeres
- 군대
- 백준
- Today
- Total
기억보다는 기록을 해볼까
C++ 공부하기 2일차 본문
오늘 공부한 백준
10950, 11720, 2675, 1157, 1546, 2438, 2562, 2739, 10818, 10951, 10952, 3052, 2908, 1085, 4153, 10250
정리
숫자 하나하나 분리하기
while (input != 0){ int digit; digit = 0; digit = input % 10; sum += digit; input /= 10; }
숫자는 숫자끼리 연산해야 한다. (중간에 문자 있으면 연산 안됨)
백준 1157번
문제: 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
#include <iostream> #include <string> using namespace std; int main() { string str; int count[26] = {0}; cin >> str; for(int i = 0; i<str.length(); i++){ //알파벳 개수 세기 str[i] = toupper(str[i]); int index; index = (int)str[i] - 65; count[index]++; } int max = 0; int cnt = 0; int idx; //최대 찾기 for (int i = 0; i<26; i++){ if(count[i] > max) max = count[i]; } //동일 최댓값 검열 for (int i = 0; i<26; i++){ if (count[i] == max) { cnt++; idx = i; } } //검열 예외 처리 if (cnt != 1) cout << "?"; //정답 출력 else cout << (char)(idx+65); }
변수명을 잘 설정 해야 한다. debug 할 때 cnt, count[] 뭐가 뭔지 헷갈린다.
이 반복문이 어떤 명령을 실행하는지를 잘 알고 //주석으로 써놓자.
자기 분수를 알라
int = double + double 하면 int 는 정수 값으로 포현되어 double을 더하는 의미가 없어진다.
연산자 '/' 는 int끼리 연산할 떄 몫으로 결과가 나온다.
double끼리 연산해야 소수점까지 나온다.
최대 최소 구하기
- 내가 알던 방식
int max = 0; for (int i = 0; i < n; i++) { if (num[i] > max) max = num[i]; }
- sort 함수 이용
#include <algorithm> sort(array + 0, array + n)
sort 함수는 algorithm 라이브러리에 존재
sort (배열이름 + 시작주소, 배열이름 + 마지막 주소)
입력 개수 모를 때
while (cin >> a >> b){ ~~~~ }
while(1){ ~~~~~~~ ~~~~~ if (~~~~~) break; ~~~~ }
이런 식으로 while 내부에 break를 설정해 문제를 해결 할 수 있다.
이게 된는구나
int main() { string a ,b; cin >> a >> b; string big; for (int i = 2; i > 0; i--){ if (a[i] > b[i]) { big = a; break; } else if(a[i] < b[i]) { big = b; break; } else continue; } }
string a, b를 입력받고 a[2] 이렇게 바로 쓸 수 있구나
다른 비어있는 string을 들고 와서 바로 같게 만들 수 있구나
big = a;
2번 클래스로 넘어갔다.
수학 문제들이 많아진 느낌?
점점 경우의수를 따져야 할 문제들이 많이 나온다.
경우의 수는 별 것 없다. 고등학교 대처럼 천천히, 꼼꼼히 따지자.
'백준으로 C++ 공부하기' 카테고리의 다른 글
C++ 공부 6일차 (1181, 2164, 11650) (0) | 2021.10.28 |
---|---|
C++ 공부 5일차 (0) | 2021.10.27 |
C++ 공부 4일차 (0) | 2021.10.26 |
C++ 공부 3일차 (0) | 2021.10.26 |
C++ 공부하기 (0) | 2021.10.23 |