본문 바로가기
c++/프로그래머스

[프로그래머스] 세로 읽기(c++)

by ilp 2023. 12. 25.
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/181904

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr



#include <string>
#include <vector>

using namespace std;

string solution(string my_string, int m, int c) {
    string answer = "";
    for(int i=c-1;i<my_string.size();i+=m){
        answer+=my_string[i];
    }
    return answer;
}

 

문자열 answer을 만들어준다.

for문을 돌리는데

변수 i가 c-1부터 시작해서 my_string의 크기보다 작을때동안, i에 m을 더해준다.

answer에 my_string[i]를 넣어준다.

my_string
m
c
result
"ihrhbakrfpndopljhygc
4
2
"happy"

이러한 상황에서

 

1열
2열
3열
4열
i(0)
h(1)
r(2)
h(3)
b(4)
a(5)
k(6)
r(7)
f(8)
p(9)
n(10)
d(11)
o(12)
p(13)
l(14)
j(15)
h(16)
y(17)
g(18)
c(19)

위 표 처럼 정리되어 닶이 happy로 나온다.

( 옆에 괄호는 그 값들의 문자열에서의 위치이다.)

여기서 2열의 처음 글자 h의 위치에 m을 더하면

2열의 두번쨰 글자인 a의 위치라는 것을 알 수 있다.

이러한 규칙으로

c를 시작값으로 두고 m을 더해서 다음 값들을 알아내는 방법을 생각했다.

근대 for문을 만들데 시작을 c-1로 하였다.

내가 생각한 방법을 열이 1부터 시작하지 않고 0부터 시작한다고 생각했다.

(배열의 위치는 0부터 센다..)

그래서 c-1로 시작하였다.


반응형