KimMinJun
Coding Note
KimMinJun
전체 방문자
오늘
어제
  • 분류 전체보기 (487) N
    • ALGORITHM (11)
      • 정렬 (6)
      • 최단경로 (1)
      • 자료구조 (1)
      • 슬라이딩 윈도우 (1)
      • etc (2)
    • Git (5)
    • Web (24)
      • Vanilla JS (13)
      • TS (2)
      • React (7)
      • ETC (1)
    • React 공식문서 (번역, 공부) (11)
      • Quick Start (2)
      • Installation (0)
      • Describing the UI (9)
      • Adding Interactivity (0)
      • Managing State (0)
      • Escape Hatches (0)
    • Next.js 공식문서 (번역, 공부) (3)
      • Getting Started (2)
      • Building Your Application (1)
    • PS (432) N
      • 백준 (187)
      • Programmers (105) N
      • CodeUp (21)
      • STL (3)
      • 제코베 JS 100제 (50)
      • SWEA (0)
      • LeetCode (65)
    • IT (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 관리

공지사항

인기 글

태그

  • Level 1
  • js
  • LeetCode
  • tree
  • codeup
  • Level 2
  • 제코베 JS 100제
  • C
  • 수학
  • programmers
  • 백준
  • Level 0
  • 정렬
  • 다이나믹 프로그래밍
  • C++
  • 문자열
  • string
  • 그래프
  • recursion
  • Level1

최근 댓글

최근 글

hELLO · Designed By 정상우.
KimMinJun

Coding Note

PS/CodeUp

CodeUp / 1차원 배열 / 1412번 / 알파벳 개수 출력하기 / C++

2020. 10. 2. 13:33

문제 설명  

영어 공부에 빠져 있는 주현이는 영어 책을 자주 본다.

어느 날 영어 문장을 보면서 어떤 알파벳 문자가 많이 사용되는지 궁금해졌다.

영어 문장이 주어지면 a부터 z까지 알파벳 문자가 각각 몇 번 나왔는지 출력하는 프로그램을 작성하시오.

 

입력

① 90글자 이내의 영어로 된 문장이 입력된다.

② 이 문장은 영어 소문자, 공백 및 특수 문자로만 이루어져 있다.

 

출력

a부터 z까지 사용된 알파벳 개수를 [입출력 예시]를 참고하여 출력한다. 특수문자와 공백의 개수는 출력하지 않는다.

 

입력 예시  

oh! my god!

 

출력 예시

a:0

b:0

c:0

d:1

e:0

f:0

g:1

h:1

i:0

j:0

k:0

l:0

m:1

n:0

o:2

p:0

q:0

r:0

s:0

t:0

u:0

v:0

w:0

x:0

y:1

z:0

 

<내소스>

#include <iostream>
#include <string>
using namespace std;

int main() {
	string str;
	int arr['z' - 'a' + 1] = { 0 };
	getline(cin, str);

	for (int i = 0; i < str.length(); i++) {
		arr[str[i] - 'a']++;
	}

	for (int i = 0; i <= 'z' - 'a'; i++) {
		cout << (char)(i + 'a') << ":" << arr[i] << endl;
	}
}

 

<다른 사람의 소스>

#include <stdio.h>  

int main()  
{
	char c, j;
	int chk[255], i;

	for(i=0; i<=255; i++)
		chk[i] = 0;

	for(;~scanf("%c", &c);)
		chk[c]++;

	for(j = 'a'; j <= 'z'; j++)
		printf("%c:%d\n", j, chk[j]);
	return 0;
}
#include <stdio.h>
#include <string.h>
int main()
{
	int len, i;
	int chk[255]={0};
	char str[91];
	gets(str);
	len = strlen(str);
	for(i = 0;i < len; i++)
	{
		chk[str[i]]++;
	}
	
	for(i = 'a'; i <= 'z'; i++)
	{
		printf("%c:%d\n",i, chk[i]);
	}	
}

 


처음에 풀고나서 내 코드가 약간 지저분하다는 생각을했다.

그래서 다른 사람의 모범소스를 보니깐 깔끔하고 단순하게 써있었다.

아직 첫번째 답안의 반복문에 들어가는 코드는 이해하지 못했지만....

두번째코드는 훨씬 직관적이고 알아보기 쉽게 되있어서 이해하기 좋았다.

저작자표시 (새창열림)

'PS > CodeUp' 카테고리의 다른 글

CodeUp / 1차원 배열(?) / 1420번 / 3등 찾기 / C++  (0) 2020.10.03
CodeUp / 1차원 배열 / 1416번 / 2진수 변환 / C++  (1) 2020.10.03
CodeUp / 1차원 배열 / 1411번 / 빠진 카드 / C++  (0) 2020.10.02
CodeUp / 입,출력 / 1125번 / 8진수 16진수 변환 / C++  (0) 2020.09.30
    'PS/CodeUp' 카테고리의 다른 글
    • CodeUp / 1차원 배열(?) / 1420번 / 3등 찾기 / C++
    • CodeUp / 1차원 배열 / 1416번 / 2진수 변환 / C++
    • CodeUp / 1차원 배열 / 1411번 / 빠진 카드 / C++
    • CodeUp / 입,출력 / 1125번 / 8진수 16진수 변환 / C++
    KimMinJun
    KimMinJun

    티스토리툴바