CodingTest

(백준/Java) 15947번 : 아기 석환 뚜루루 뚜루

Kua 2021. 5. 25. 01:30

난이도: Bronze 1

프로그래밍 언어: Java

문제명: 아기 석환 뚜루루 뚜루

푼일자: 2021년 5월

 

주소: https://www.acmicpc.net/problem/15947

 

문제풀기

먼저 입력된 값에 따라 위치를 찾아 가사를 도출을 해내야합니다.

 

해당 알고리즘 먼저 작성을 해봅니다.

1
2
3
4
5
6
7
8
9
10
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
sc.close();
 
String lyrics = "baby sukhwan tururu turu very cute tururu turu in bed tururu turu baby sukhwan";
String[] arr_lyrics = lyrics.split(" ");
 
int re = a % arr_lyrics.length;
if (re == 0System.out.println(arr_lyrics[arr_lyrics.length - 1]);
else System.out.println(arr_lyrics[re - 1]);
cs

 

그리고 실행을 해 봅니다.

원하던 값이 정상적으로 도출되었습니다.

 

이제 가사가 한번씩 반복이 될때마다 tururu의 ru를 더해주고 ru가 5회 초과할 경우 다른 문자열로 출력할 수 있도록 작업을 해 줍니다.

 

완성된 코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import java.util.Scanner;
 
public class question_15947 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        sc.close();
 
        String lyrics = "baby sukhwan tururu turu very cute tururu turu in bed tururu turu baby sukhwan";
        String[] arr_lyrics = lyrics.split(" ");
 
        int re = a % arr_lyrics.length;
        if (re == 0System.out.println(arr_lyrics[arr_lyrics.length - 1]);
        else {
            String cur_str = arr_lyrics[re - 1];
            if (cur_str.contains("turu")) {
                int counting = a / arr_lyrics.length;
                if (cur_str.contains("tururu"))
                    if (counting >= 3System.out.println("tu+ru*" + (counting + 2));
                    else  System.out.println(cur_str + getRuRuRu(a / arr_lyrics.length));
                else
                    if (counting >= 4System.out.println("tu+ru*" + (counting + 1));
                    else  System.out.println(cur_str + getRuRuRu(a / arr_lyrics.length));
            } else System.out.println(cur_str);
        }
    }
 
    public static String getRuRuRu(int count) {
        StringBuilder sb = new StringBuilder();
        while(count-- != 0) sb.append("ru");
        return sb.toString();
    }
}
cs

 

 

Java 언어로 채점 현황을 봤는데 저 포함 6명이 합격을 받으신 분들이 계셨었어요!

다른 분들의 풀이를 보니 완전 다르게 접근하신 분도 계시고, 저와 다르게 한줄로 길게 작성하시는 분들도 많았습니다.

보면서 하나씩 더 배워가고, 아쉬웠던건 contains 가 아닌 길이로 체크했다면

메모리를 더 적게 먹었지 않았을까 싶습니다.

반응형