본문 바로가기

Certificate/Cos Pro 1급 (Python)

[프로그래머스] Cos Pro 1급 모의고사, 단어를 순서대로 적으세요

Hi, There!
안녕하세요, 바오밥입니다.


목차

  1. 문제
  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해주세요.

 

예제

 

예제 설명

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


풀이

풀이 코드 및 해설

def solution(K, words):
    answer = 1
    # 라인 수 1로 변경
    
    wdLen = 0
    # 단어의 길이 0
    wdCnt = len(words)
    # 단어의 개수
    
    for i in range(wdCnt):
    	# 단어의 개수만큼 반복
        wdLen += len(words[i])+1
        # 모든 단어를 순회하며 단어의 길이 + 1 누적
        if(wdLen > K+1):
        # 누적된 값이 K를 초과하면
        # K+1인 이유 => 라인의 마지막 단어에는 공백이 없기 때문임
        # 예시) word1_hi_word2 인 경우 word2 뒤에는 공백이 없음
		# 그러나 위에서 공백을 모든 단어의 길이에 +1를 했기 때문에 구분이 필요함
            answer += 1
            # 라인 수 증가
            wdLen = len(words[i])+1 
            # 누적된 길이 다음 단어의 길이 + 1로 초기화
    return answer

해당 문제는 자꾸 테스트 케이스 하나가 반려되어서 부득이하게 다른 분의 풀이를 참고하였다.

https://blog.naver.com/hyoun1202/222328703618

 

COS PRO 1급 JAVA 6차 기출문제 > "단어를 순서대로 적으세요" 풀이(프로그래머스 "COS Pro 1급 Java 모의

□ 문제설명 한 줄에 K자를 적을 수 있는 메모장에 영어 단어들을 적으려 합니다. 영어 단어는 정해진 순...

blog.naver.com