본문 바로가기
Coding Test/Java Coding Test

[프로그래머스 / 자바] - qr code

by nam_ji 2024. 7. 29.

qr code

문제

  • 정수 q, r과 문자열 code가 매개변수로 주어집니다.
  • code의 각 인덱스를 q를 기준으로 나누었을 때,
  • 나머지가 r인 위치의 문자를 앞에서부터 순서대로 이어 붙인 문자열을
  • 출력하는 문제입니다.
  • 입출력 예
    • q r code result
      3 1 "qjnwezgrpirldywt" "jerry"
      1 0 "programmers" "programmers"


테스트 (인텔리제이)

  • 우선 반환 값의 타입을 StringBuilder로 수정하고
  • for문으로 문자열 code의 길이만큼 순회하도록 합니다.
  • for문 안에는 if문으로 조건을 걸어줍니다.
  • 조건은 for문이 돌고 있는 순서와 q를 나눴을 때 나머지가 r과 같은
  • 값의 문자를 charAt 메서드를 이용하여 answer에 추가해주면 됩니다.
package com.namji.codingtest;

public class qr_code {
  public static void main(String[] args) {
    /*
    정수 q, r과 문자열 code가 매개변수로 주어집니다.
    code의 각 인덱스를 q를 기준으로 나누었을 때,
    나머지가 r인 위치의 문자를 앞에서부터 순서대로 이어 붙인 문자열을
    출력하는 문제입니다.

    입출력 예
    q	r	code	              result
    3	1	"qjnwezgrpirldywt"	"jerry"
    1	0	"programmers"	      "programmers"

    입출력 설명
    #1
    예제 1번의 q와 r은 각각 3, 1이고
    인덱스와 그 값을 q로 나눈 나머지가 잘 보이도록 표로 만들면 다음과 같습니다.
    code	        q	  j	  n	  w	  e	  z	  g	  r	  p	  i	  r	  l	  d	  y	  w	  t
    index	        0	  1	  2	  3	  4	  5	  6	  7	  8	  9	  10	11	12	13	14	15
    q로 나눈 나머지	0	  1	  2	  0	  1	  2	  0	  1	  2	  0	  1	  2	  0	  1	  2	  0
    q로 나눈 나머지가 1인 인덱스의 문자들을
    앞에서부터 순서대로 이어 붙이면 "jerry"가 되므로 이를 return 합니다.

    #2
    예제 2번의 q와 r은 각각 1, 0이고
    인덱스와 그 값을 q로 나눈 나머지가 잘 보이도록 표로 만들면 다음과 같습니다.
    code	        p	r	o	g	r	a	m	m	e	r	s
    index	        0	1	2	3	4	5	6	7	8	9	10
    q로 나눈 나머지	0	0	0	0	0	0	0	0	0	0	0
    q로 나눈 나머지가 1인 인덱스의 문자들을
    앞에서부터 순서대로 이어 붙이면 "programmers"가 되므로 이를 return 합니다.
     */

    int q = 1;
    int r = 0;
    String code = "programmers";
    StringBuilder answer = new StringBuilder();

    for (int i = 0; i < code.length(); i++) {
      if (i % q == r) {
        answer.append(code.charAt(i));
      }
    }

    System.out.println(answer);
  }
}

프로그래머스 코드

class Solution {
    public StringBuilder solution(int q, int r, String code) {
        StringBuilder answer = new StringBuilder();
        
        for (int i = 0; i < code.length(); i++) {
            if (i % q == r) {
                answer.append(code.charAt(i));
            }
        }
        
        return answer;
    }
}