티스토리 뷰

728x90
반응형

백준 온라인 저지(BOJ) 27866번 문자와 문자열
https://www.acmicpc.net/problem/27866

 

27866번: 문자와 문자열

첫째 줄에 영어 소문자와 대문자로만 이루어진 단어 $S$가 주어진다. 단어의 길이는 최대 $1\,000$이다. 둘째 줄에 정수 $i$가 주어진다. ($1 \le i \le \left|S\right|$)

www.acmicpc.net

* 사용언어 : C언어, C++

 

1. 문제

단어 S와 정수 i 를 입력 받고, S의 i번째 글자를 출력

 

2. 풀이

입출력 시 사용하는 서식 문자(%d, %c, %s 등)에 대한 이해가 필요합니다.
 
%s 로 문자열을 입력을 받으면 공백(space or enter)이 나오기 전 까지
모든 문자를 저장하고 마지막에 \0(null) 을 추가해줍니다.
(c언어에서 문자열의 끝은 항상 \0 입니다)

"Baekjoon" 을 %s 로 입력받으면 (글자 수 + 1)번째 자리에 \0(null) 문자가 입력되어 있음


그래서 이 문제는 아래의 절차로 구현하면 됩니다.

  1. 문자를 입력받을 1001 크기의 char 배열을 선언
  2. %s(string, 문자열)와 %d(decimal, 10진수)로 입력받기
  3. i - 1 번째 문자를 %c(char, 문자)로 출력

 

3. 코드

#ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#endif

#include <cstdio>

int main() {
#ifdef _WIN32
	freopen("input.txt", "r", stdin);
#endif // _WIN32
	char s[1001];
	int i;

	scanf("%s %d", s, &i);
	printf("%c\n", s[i - 1]);

	return 0;
}

* char 배열의 크기는 마지막 null 문자를 고려하여 1001로 잡았습니다. 1000 으로 해도 1001번째 공간은 사용하지 않으므로 정답입니다.

728x90
반응형
댓글