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 | 31 |
Tags
- Spring
- 맛집 투어
- 프로그래머스
- 맛집
- 포두부 보쌈
- HTTP API
- 동적 프로그래밍
- 2589
- 설탕 배달
- mvc
- 호유동
- 알고리즘
- 문자열 압축
- BFS
- 1로 만들기
- 2839
- 고모네 콩탕
- 스프링
- 스프링 MVC
- 다이나믹 프로그래밍
- 쓰레드 풀
- 투어
- dp
- 2020 KAKAO BLIND
- 완도산회
- 2638
- 양꼬치
- Servlet
- 서블릿
- 백준
Archives
- Today
- Total
프로그래밍 공방
[백준] 1157번 : 단어 공부 본문
문제 |
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는
프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
입력 |
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지
않는다.
출력 |
(첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이
여러 개 존재하는 경우에는 ? 를 출력한다.)
문제해결방법 |
1. 길이가 26인 배열을 선언하고 0으로 초기화 해준다. (A~Z = 26개)
2. 알파벳의 아스키코드 값을 이용해서 앞서 선언한 배열에 각 알파벳이 몇 번 나왔는지 넣어준다.
3. 초기 최대값을 0으로 두고 배열을 돌며 최대값보다 크면 최대값에는 해당하는 배열의 값을
넣어주고 인덱스 값 + 65 를 통해 char형태의 변수에 알파벳을 넣어준다. 만약 최대값과 같은
배열 값이 있다면 변수에는 ?를 넣어준다.
코드 |
#include<iostream>
#include<string>
using namespace std;
int main() {
string s;
int arr[26] = { 0 };
int max = 0;
char answer;
getline(cin, s);
// 아스키 코드를 이용해서 배열에 각 알파벳이 몇 번 나왔는지 넣어준다.
for (int i = 0; i < s.length(); i++) {
if (s[i] >= 65 && s[i] <= 90)
arr[s[i] - 65] += 1;
else if (s[i] >= 97 && s[i] <= 122)
arr[s[i] - 97] += 1;
}
// 해결방법 3에 해당하는 코드
for (int i = 0; i < 26; i++) {
if (arr[i] > max) {
answer = i + 65;
max = arr[i];
}
else if (arr[i] == max)
answer = '?';
}
cout << answer << "\n";
return 0;
}
'개발 > 문제해결' 카테고리의 다른 글
| [프로그래머스] 2020 KAKAO BLIND : 문자열 압축 (0) | 2020.11.01 |
|---|---|
| [백준] 1463번 : 1로 만들기 (0) | 2020.11.01 |
| [백준] 2839번 : 설탕 배달 (0) | 2020.10.31 |
| [백준] 2589번 : 보물섬 (0) | 2020.10.29 |
| [백준] 2638번 : 치즈 (0) | 2020.10.28 |