▶slice() 함수를 사용한 간단한 문제가 있어 정리해보고자 합니다.
문제설명
문자열 my_string과 두 정수 m, c가 주어집니다. my_string을 한 줄에 m 글자씩 가로로 적었을 때 왼쪽부터 세로로 c번째 열에 적힌 글자들을 문자열로 return 하는 solution 함수를 작성해 주세요.
제한사항
- my_string은 영소문자로 이루어져 있습니다.
- 1 ≤ m ≤ my_string의 길이 ≤ 1,000
- m은 my_string 길이의 약수로만 주어집니다.
- 1 ≤ c ≤ m
입출력 예 & 설명
입출력 예 #1
- 예제 1번의 my_string을 한 줄에 4 글자씩 쓰면 다음의 표와 같습니다.
- 2열에 적힌 글자를 세로로 읽으면 happy이므로 "happy"를 return 합니다.
입출력 예 #2
- 예제 2번의 my_string은 m이 1이므로 세로로 "programmers"를 적는 것과 같고 따라서 1열에 적힌 글자를 세로로 읽으면 programmers입니다. 따라서 "programmers"를 return 합니다.
나의 풀이
먼저 문제를 보면 문자열 str이 주어지면 m 개씩 잘라서 배열 안에 넣어주고 c번째 열을 출력하는 문제입니다.
문제를 보자마자 2차원 배열에 m 개씩 잘라서 넣으면 되겠다는 생각을 했습니다.
2차원 배열안에 들어갈 각 rows를 선언해 주고 기본 for문을 사용하여 0부터 시작해서 문자열(i <= str.length-1) 끝까지 m 개씩 자르기 위해서 i에다가 m씩 누적하는 증감문을 사용했습니다.
ex) m = 4
- 0~4
- 4~8
- 8~12
- 12~16
- 16~20
5번째 줄에서 전개 연산자(...)를 사용하여 문자열 str을 전개해 주고, slice() 함수를 사용하여 m 개씩 잘라 주었습니다.
그러면 위와 같이 문자열 str을 m 개씩 자른 2차원 배열이 만들어지게 됩니다.
그다음에 for of문을 사용하여 각 rows의 c를 뽑아 마무리했습니다.
다른 풀이
다른 풀이에서는 2차원 배열을 사용하지 않고 "나의 풀이"와 같은 기본 for문의 조건과 rows를 각 행마다 생성해 주고 m 개씩 잘라서 rows 변수에 저장을 해줍니다.
그러면 이와 같이 문자열 rows가 생성되고, 문자열의 c번째 요소를 result에 붙여 마무리했습니다.
다른 풀이 2
문제를 자세히 보면 c-1을 시작으로 m 개씩 출력해 보면 답이 나오는 것을 알 수 있습니다.
따라서 기본 for문을 사용하여 c-1을 시작으로 m 개씩 증가하는 조건문을 만들어주고, answer 변수에 각 문자열의 m배수 번째 요소를 붙여 마무리했습니다.
'Coding Test > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 날짜 비교하기 (JavaScript) (1) | 2024.01.29 |
---|---|
[프로그래머스] 등차수열의 특정한 항만 더하기 (JavaScript) (1) | 2024.01.28 |
[프로그래머스] 배열 만들기 3 (2) | 2024.01.26 |
[프로그래머스] 특별한 이차원 배열 1 (JavaScript) (1) | 2024.01.24 |
[프로그래머스] 문자열 바꿔서 찾기 (JavaScript) (2) | 2024.01.21 |