극동대학교\AI컴퓨터공학과\JAVA/프로그래머스 코딩 기초 트레이닝

[프로그래머스, LV.0] 세로 읽기

sundori 2023. 6. 28. 00:57

#1 세로 읽기

문제 설명

문자열 my_string과 두 정수 mc가 주어집니다. my_string을 한 줄에 m 글자씩 가로로 적었을 때 왼쪽부터 세로로 c번째 열에 적힌 글자들을 문자열로 return 하는 solution 함수를 작성해 주세요.

제한사항

 

  • my_string은 영소문자로 이루어져 있습니다.
  • 1 ≤ m ≤ my_string의 길이 ≤ 1,000
  • m은 my_string 길이의 약수로만 주어집니다.
  • 1 ≤ c ≤ m

입출력 예

my_string m c result
"ihrhbakrfpndopljhygc" 4 2 "happy"
"programmers" 1 1 "programmers"

 

입출력 예 설명

#2 코드 및 알고리즘

class Solution {
    public String solution(String my_string, int m, int c) {
        String arr = ""; // "ihrh bakr fpnd oplj hygc"
        for(int j = c - 1; j < my_string.length();){
            arr += my_string.charAt(j);
            j += m;
        }
        /*for(int j = c - 1; j < my_string.length(); j += m){
            arr += my_string.charAt(j);
        }*/
        return arr;
    }
}
---------------------------------------------------
정확성  테스트
테스트 1 〉	        통과 (11.93ms, 75.1MB)
테스트 2 〉	통과 (11.75ms, 79.4MB)
테스트 3 〉	통과 (13.72ms, 75.2MB)
테스트 4 〉	통과 (10.98ms, 71.8MB)
테스트 5 〉	        통과 (16.07ms, 75.6MB)
테스트 6 〉	통과 (10.30ms, 76.9MB)
테스트 7 〉	        통과 (12.39ms, 76MB)
테스트 8 〉	통과 (12.08ms, 78.2MB)
테스트 9 〉	통과 (17.33ms, 76.6MB)
테스트 10 〉	통과 (13.98ms, 75.5MB)
테스트 11 〉	통과 (13.44ms, 72.8MB)
테스트 12 〉	통과 (10.34ms, 70MB)
테스트 13 〉	통과 (13.49ms, 76.7MB)
테스트 14 〉	통과 (15.80ms, 77.8MB)
테스트 15 〉	통과 (13.43ms, 77.7MB)
테스트 16 〉	통과 (16.97ms, 86MB)
테스트 17 〉	통과 (9.33ms, 72.1MB)
테스트 18 〉	통과 (11.86ms, 78.9MB)

풀이:

  • 주어진 문자열 my_string에서 m번 반복하며 c번마다 저장하는 알고리즘이다.

코드 예제

public class Main {
    public static void main(String[] args) {
        String my_string = "ihrhbakrfpndopljhygc"; // "ihrh bakr fpnd oplj hygc"
        String arr = "";
        int m =4, c = 2;
        for(int j = c - 1; j < my_string.length();){
            arr += my_string.charAt(j);
            j += m;
        }
    }
}
---------------------------------
h |j = 1| c = 2|  // 루프 1회 반복
ha |j = 5| c = 2|  // 루프 2회 반복
hap |j = 9| c = 2| // 루프 3회 반복
happ |j = 13| c = 2| // 루프 4회 반복
happy |j = 17| c = 2| // 루프 5회 반복