백준 2675번 문자열 반복
2675번: 문자열 반복
문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다
www.acmicpc.net
문제 요약
입력한 문자열 S에 대해 첫 번째 문자부터 각각 R만큼 반복한 새 문자열 P를 입력한 테스트 케이스 개수만큼 출력하는
프로그램이다. 테이스의 개수 T(1 <=T <=1,000), 각 테스트 케이스는 반복 횟수 R(1 <=R <=8), 문자열 S가 공백으로 구분되어 주어진다. S의 길이는 적어도 1이며 20글자를 넘지 않는다.
문제풀이
문제 그대로 차례대로 코드를 짰고, 그 안에서 약간의 에러들과 헷갈리는 개념이 있어서 조금 헤맸다. 우선 처음에 이중 배열을 선언할 때 main문 안에 선언했었는데, 스택이 초과되었고, 그래서 전역 변수로 선언했다. 문자열에 복사하고 저장할 때 strlen() 함수 라이브러리를 이용해 구현하려고 했지만, 오류가 발생했다.
이유는 strlen함수의 원형은 size_t strlen(const *_Str);이고, 애초에 이중 배열일 때는 구현이 불가능한 것이었다. 1년을 배우고 2년을 군대를 다녀오니 개념조차 잊어버리고 까먹은 탓에 난해한 부분이 계속해서 발생하지만, 차근차근 알아보는 수밖에 없을 것 같다. 그래서 결국 strlen() 함수는 제쳐두고 배열의 크기를 구하는 가장 기본적인 방식으로 접근했다. sizeof 연산자로 구하는 방법인데, 가끔 헷갈릴 때가 있어서 정리하고 가려고 한다.
2차원 배열일 경우 가로 크기를 구하고 싶을 때에는 가로 한 줄의 크기를 요소의 크기로 나눠주면 된다.
ex) sizeof(array [0]) / sizeof(int);
만약, 세로 크기를 구하고 싶다면 배열이 차지하는 전체 공간을 가로 한 줄의 크기로 나눠주면 된다.
ex) sizeof(array) / sizeof(array [0]);
http://colorscripter.com/s/BtOEaEH
공유된 코드 - Color Scripter
저작권자 : inryureal@tistory.com 삭제 요청 코드 설명 : C언어 백준 2675번 문자열 반복
colorscripter.com