본문 바로가기
Programming/Cos Pro 1급

Cos Pro 1급 - 샘플 문제 6차 2번 - 단어를 적는 데 필요한 줄 수

by 우공80 2022. 11. 17.
728x90

단어를 적는 데 필요한 줄 수

문제 지문 #2


한 줄에 K자를 적을 수 있는 메모장에 영어 단어들을 적으려 합니다. 영어 단어는 정해진 순서로 적어야 하며, 단어와 단어 사이는 공백 하나로 구분합니다. 단, 한 줄의 끝에 단어 하나를 완전히 적지 못한다면, 그 줄의 나머지 부분을 모두 공백으로 채우고 다음 줄부터 다시 단어를 적습니다.

예를 들어 한 줄에 10자를 적을 수 있고, 주어진 단어가 순서대로 ["nice", "happy", "hello", "world", "hi"]인 경우 각 줄에 다음과 같이 적을 수 있습니다.('_'는 공백을 나타냅니다.)

  • 첫째 줄 : "nice_happy"
  • 둘째 줄 : "hello_____"
  • 셋째 줄 : "world_hi"

이때, 둘째 줄에 "hello"를 적으면 단어를 적을 수 있는 남은 칸은 5칸이며, "world"를 이어서 적으려면 공백 하나를 포함하여 총 6칸이 필요합니다. 따라서 단어가 잘리게 되므로 남은 칸을 모두 공백으로 채운 후, 다음 줄에 "world"부터 다시 단어를 적어 나갑니다.

한 줄에 적을 수 있는 글자 수 K와 적을 단어가 순서대로 담긴 배열 words가 매개변수로 주어질 때, 단어를 모두 적으면 몇 줄이 되는지 return 하도록 solution 메소를 완성해주세요.


#####매개변수 설명
한 줄에 적을 수 있는 글자 수 K와 적을 단어가 순서대로 담긴 배열 words가 solution 메서드의 매개변수로 주어집니다.

  • K는 5 이상 30 이하인 자연수입니다.
  • words 배열의 길이는 1 이상 100 이하입니다.
  • words 배열에 담겨있는 모든 단어는 알파벳 소문자로만 이루어져 있으며, 각 단어의 길이는 K 이하입니다.

#####return값 설명
단어를 모두 적으면 몇 줄이 되는지 return 해주세요.


#####예제

K words return
10 ["nice", "happy", "hello", "world", "hi"] 3

#####예제 설명
예제#1
문제의 예시와 같으며, 단어를 모두 적으면 3줄이 됩니다.

728x90

 

혼자 풀이

전체 메서드를 작성하는 문제입니다. 주어진 단어를 한 줄에 K인 메모장에 작성하면 되는데요.
실제 메모장에 작성한 것을 출력하는 것이 아니라 줄 수만 구하면 됩니다.
단어가 잘리면 공백으로 채우라는 것은 생각하지 않아도 됩니다. 
한 줄에 남은 글자 수를 관리하는 K_tmp를 만들어서 단어 길이를 빼면서 줄 수를 계산했습니다.

// 다음과 같이 import를 사용할 수 있습니다.
import java.util.*;

class Main {
    public int solution(int K, String[] words) {
        // 여기에 코드를 작성해주세요.
        int answer = 0;			
        int K_tmp=K;
        
        for(int i=0;i<words.length;i++){ //단어를 하나씩 꺼내옴
            if(K_tmp-words[i].length()>=0){
                K_tmp=K_tmp-words[i].length()-1; //현재 단어의 길이를 K_tmp에서 빼서 남은 글자수를 계산
            }else{ //현재 단어가 빈칸보다 길면
                answer++;	//줄수를 증가시키고
                K_tmp=K; //남은 글자수를 초기화
                K_tmp=K_tmp-words[i].length()-1; //새 줄에 단어를 넣고 남은 글자수 계산
            }
        }
        return answer+1;//answer가 0부터 시작했으므로 1을 더해서 반환
    }
    
    // 아래는 테스트케이스 출력을 해보기 위한 main 메소드입니다.
    public static void main(String[] args) {
        Main sol = new Main();
        int K = 10;
        String[] words = {new String("nice"), new String("happy"), new String("hello"), new String("world"), new String("hi")};
        int ret = sol.solution(K, words);

        // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
        System.out.println("solution 메소드의 반환 값은 " + ret + " 입니다.");
    }
}

 

정답


공홈에서 제공되는 정답이 없습니다.


실습은 아래 참고


2022.10.25 - [Programming/Cos Pro 1급] - Cos Pro 1급 공부 사이트 추천 - 구름 에듀(https://edu.goorm.io/)

 

Cos Pro 1급 공부 사이트 추천 - 구름에듀(https://edu.goorm.io/)

구름 EDU??? YBM 공식 사이트에서 받은 문제 지문/문제 코드/정답 코드를 intellij에서 공부하다가 후배 추천으로 구름 에듀를 알게 되었습니다. 문제 지문 따로 문제 코드 따로 열어보는 게 여간 불

woogong80.tistory.com

728x90

댓글