본문 바로가기
코딩테스트/Cos Pro 1급 Java

[Cos Pro 1급 java] [3차] 문제5) 전광판 문구 출력

by drCode 2021. 3. 17.
728x90
반응형

 

안녕하세요

 

이번 포스팅은 Cos Pro 1급 java 3차 기출 문제 중 5번 문제인 전광판 문구 출력을 다뤄보겠습니다.

 

□ 문제설명

핸드폰 화면에 문구를 출력해주는 전광판 어플이 있습니다. 문구는 "happy-birthday"로 설정하였습니다. 전광판 어플은 다음과 같은 규칙으로 화면에 문구를 출력해 줍니다.

  • 어플은 화면에 14자 문구를 출력합니다.
  • 문구는 1초에 왼쪽으로 한 칸씩 움직입니다.
  • 문구 이외의 부분은 "_"로 표시됩니다.
  • 어플은 설정한 문구를 화면에 반복해 출력합니다.
  • 어플은 문구가 다 지나가면 설정한 문구를 반복해 보여줍니다.


예를 들어, 처음에는 화면에 "______________"가 보입니다.
3초 뒤에는 화면에 "___________hap"가 보입니다.
14초 뒤에는 화면에 "happy-birthday"가 보입니다.
20초 뒤에는 화면에 "birthday_____"가 보입니다.
28초 뒤에는 모든 문자열이 지나간 후 "______________"가 보입니다.
29초 뒤에는 다시 첫 번째 문자부터 나타나며, "_____________h"가 보입니다.

 

문구를 담은 문자열 phrases와 초를 담은 second가 매개변수로 주어질 때, 화면에 보이는 문자열을 출력하도록 solution 함수를 작성해 주세요.
단, '_'는 공백을 나타냅니다.


□ 매개변수 설명

문구를 담은 문자열 phrases와 초를 담은 second가 solution 함수의 매개변수로 주어집니다.

  • phrases는 "happy-birthday"입니다.
  • second는 1 이상 10,000 이하인 자연수입니다.

□ return 값 설명

solution 함수는 화면에 보이는 문자열을 return 합니다.


□ 예시

phrases second return
"happy-birthday" 3 "___________hap"

□ 예시설명

화면 처음상태인 "______________"에서 3초가 지나면 화면에는 글자 3개가 왼쪽으로 옮겨진 상태인 "___________hap"가 보입니다.

 

※ 문제 접근 방식

(1) 임시로 temp 변수에 "__________________"를 만듭니다.

(2) temp에 파라미터로 받은 문자열을 이어붙입니다.

(3) 파라미터로 받은 second 만큼 for문을 도는데, 임시로 만든 temp에서 맨앞 글자를 받아서 temp 맨 뒤에 붙입니다.

(4) substring을 1부터 받아서 다시 temp에 대입합니다.

(5) for문이 끝난 후, temp에 문자열을 0부터 phrases 길이만큼 잘라서 정답을 리턴해줍니다.

 

 

package electricBoardSentence;

public class ElectricBoardSentence {
	public static void main(String[] args) {
		Main sol = new Main();
		String phrases = new String("happy-birthday");
		int second = 3;
		String ret = sol.solution(phrases, second);
		// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
		System.out.println("solution 메소드의 반환 값은 \"" + ret + "\" 입니다.");
	}
}

class Main {
	public String solution(String phrases, int second) {
		String answer = "";
		String temp = "______________";
		temp = temp.concat(phrases);
		
		for (int i = 0; i < second; i++) {
			char tmp = temp.charAt(0);
			temp += tmp;
			temp = temp.substring(1);
		}
		
		answer = temp.substring(0, phrases.length());
		return answer;
	}

}

 

 

728x90
반응형

댓글