KimMinJun
Coding Note
KimMinJun
전체 방문자
오늘
어제
  • 분류 전체보기 (486)
    • 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 (431)
      • 백준 (187)
      • Programmers (104)
      • CodeUp (21)
      • STL (3)
      • 제코베 JS 100제 (50)
      • SWEA (0)
      • LeetCode (65)
    • IT (1)

블로그 메뉴

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

공지사항

인기 글

태그

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

최근 댓글

최근 글

hELLO · Designed By 정상우.
KimMinJun
PS/백준

백준 / String(문자열) / 10809번 / 알파벳 찾기 / C++

PS/백준

백준 / String(문자열) / 10809번 / 알파벳 찾기 / C++

2020. 5. 27. 02:25

문제

알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다.

출력

각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다.

만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다.

 

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

int main() {
	string str;
	cin >> str;

	int alphaArr[26];

	for (int i = 0; i < 26; i++) {
		alphaArr[i] = -1;
	}

	for (int j = 0; j < str.length(); j++) {
		if (alphaArr[str[j] - 'a'] == -1) {
			alphaArr[str[j] - 'a'] = j;
		}
	}

	for (int k = 0; k < 26; k++) {
		cout << alphaArr[k] << " ";
	}

	cout << endl;
}

아마 많은 나같은 초보자들이 어떻게 '몇번째의 알파벳'에 대해 접근하는 것이 어려웠을것이다.

일단 string으로 input값을 받아주고, 알파벳이 총 26개이므로, -1로 초기화된 26사이즈의 배열을 만들어준다.

그리고 input값의 0(배열의 처음시작은 0)번째 알파벳이 b라고 하면, 'b' - 'a'는 1이된다.(ASCII 연산)

따라서 26개의 -1이 있는 배열에 0번째는 1이되는것이다.

정말 헷갈릴수도 있고 처음엔 이해가 잘 안갈것이다.

말보단 위코드를 보고 이해해보고, 아스키 연산이 이해가 가지 않는다면, 아스키표를 참고하는것이 좋겠다.

저작자표시 (새창열림)

'PS > 백준' 카테고리의 다른 글

백준 / String(문자열) / 1157번 / 단어 공부 / C++  (0) 2020.05.27
백준 / String(문자열) / 2675번 / 문자열 반복 / C++  (0) 2020.05.27
백준 / String(문자열) / 11720번 / 숫자의 합 / C++  (0) 2020.05.26
백준 / 10951번 / A+B - 4 / C++  (0) 2020.05.16
  • 문제
  • 입력
  • 출력
'PS/백준' 카테고리의 다른 글
  • 백준 / String(문자열) / 1157번 / 단어 공부 / C++
  • 백준 / String(문자열) / 2675번 / 문자열 반복 / C++
  • 백준 / String(문자열) / 11720번 / 숫자의 합 / C++
  • 백준 / 10951번 / A+B - 4 / C++
KimMinJun
KimMinJun

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.