Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- firebase #파이어베이스
- flutter #상태관리
- flutter #깃
- 로컬저장소 #이름변경
- 비주얼 스튜디오 #vs #visual studio
- flutter #플러터
- unity #2d-game #minigame #vscode
- baekjoon #boj #c++
- 플러터 #flutter #restful #rest api
- 유데미 #udemy #웅진씽크빅 #스나이퍼팩토리 #인사이드아웃 #미래내일일경험 #프로젝트캠프 #부트캠프 #react #리액트프로젝트 #프론트엔드개발자양성과정 #개발자교육과
- 백준 #boj
- boj #baekjoon
- 백준 #boj #baekjoon
- Flutter
- 백준 #c++
- 인턴 #프론트엔드 #개발자 #프론트엔드개발자 #취준
- 비주얼스튜디오 #코드스니펫
- git #unity #깃허브
- unity #2d-game
- boj #c++
- flutter #firebase #플러터 #파이어베이스 #연동
- flutter #app #취준
- baekjoon #백준 #boj
- VS #비주얼스튜디오
- flutter #todolist
- flutter #git
- 백준
- boj #baekjoon #c++
- #유데미 #udemy #웅진씽크빅 #스나이퍼팩토리 #인사이드아웃 #미래내일일경험 #프로젝트캠프 #부트캠프 #react #리액트프로젝트 #프론트엔드개발자양성과정 #개발자교육과정
- flutter #플러터 #분석
Archives
- Today
- Total
cococo-coding
3059번. 등장하지 않는 문자의 합 (c++풀이) 본문
문제
3059번: 등장하지 않는 문자의 합 (acmicpc.net)
풀이
1. 우선은 arr[26]={0,} 배열을 생성한다. 이 배열은 추후에 알파벳 개수를 카운팅하는 용도로 쓸 것이다.
2. string s를 입력받고, for문을 이용해 s[0]부터 끝 인덱스까지 65를 빼준다.
65를 빼주는 이유는 A의 아스키코드가 65이므로, A=0 B=1 이런식으로 계산을 편하게 하기 위해서이다.
3. (point) 그러면 앞에서 적은대로 A=0, B=1, ... Z=25가 된다. 이 값을 cnt 변수에 받는다.
그리고 처음에 arr배열에 인덱스로 cnt를 넣어주면 각 알파벳 별로 배열의 값이 증가하게 된다.
4. 이렇게 되면 arr배열에서 카운팅 된 애들은 1이상의 값을 갖게 되고, 카운팅 되지 못한 애들(문자열에 없는 애들)은 그대로 0의 값을 유지하게 된다. 이를 이용해서 for문으로 arr을 인덱스[0]부터 끝까지 돌려서 값이 0인애들을 sum에 더해준다.
5. 마지막으로 sum의 값을 출력한다.
이렇게 알파벳과 관련된 문자열 문제는 배열을 하나 생성해서 카운팅하는 용도로 사용하면 편리하다.
아스키코드로 알파벳을 표현하는 문제가 많으므로, A=65 Z=90 이렇게 외워두자.
코드
#include <iostream>
using namespace std;
/*
1. T를 입력받는다.
2. T만큼 테스트 데이터S를 입력받는다.
3. 각 문자열에서 등장하지 않는 알파벳 대문자를 찾는다.
4. 등장하지 않는 알파벳 대문자의 합을 찾는다.
5. 그 합을 출력한다.
*/
int main() {
//1
int t;
cin >> t;
// 2
while(t--) {
string s;
cin >> s;
//알파벳 대문자 배열arr 생성
int arr[26] = { 0, };
int cnt = 0;
//3
for (int i = 0; i < s.size(); i++) {
cnt= s[i] - 65;
arr[cnt]++;
}
//4
int sum = 0;
for (int j = 0; j < 26; j++) {
if (arr[j] == 0) {
sum += j + 65;
}
}
//5
cout << sum << endl;
}
return 0;
}
'[BOJ] 코드 모음 > C++_learning 문제집' 카테고리의 다른 글
10867번. 중복 빼고 정렬하기 (c++풀이) (0) | 2024.01.11 |
---|---|
5598번. 카이사르 암호 (c++풀이) (0) | 2024.01.11 |
3049번. 다각형의 대각선 (c++ 풀이) (0) | 2024.01.10 |
4493번. 가위 바위 보? (c++풀이) (0) | 2024.01.09 |
10801번. 카드게임 (c++풀이) (0) | 2024.01.09 |