2023. 3. 11. 17:39ㆍ자격증/COS Pro 1급 Python
D-9
모의고사 10번. 메모장
문제 설명
한 줄에 K자를 적을 수 있는 메모장에 영어 단어들을 적으려 합니다. 영어 단어는 정해진 순서로 적어야 하며, 단어와 단어 사이는 공백 하나로 구분합니다. 단, 한 줄의 끝에 단어 하나를 완전히 적지 못한다면, 그 줄의 나머지 부분을 모두 공백으로 채우고 다음 줄부터 다시 단어를 적습니다.
예를 들어 한 줄에 10자를 적을 수 있고, 주어진 단어가 순서대로 ["nice", "happy", "hello", "world", "hi"] 인 경우 각 줄에 다음과 같이 적을 수 있습니다.('_'는 공백을 나타냅니다.)
- 첫째 줄 : "nice_happy"
- 둘째 줄 : "hello_____"
- 셋째 줄 : "world_hi"
이때, 둘째 줄에 "hello"를 적으면 단어를 적을 수 있는 남은 칸은 5칸이며, "world"를 이어서 적으려면 공백 하나를 포함하여 총 6칸이 필요합니다. 따라서 단어가 잘리게 되므로 남은 칸을 모두 공백으로 채운 후, 다음 줄에 "world"부터 다시 단어를 적어 나갑니다.
한 줄에 적을 수 있는 글자 수 K와 적을 단어가 순서대로 담긴 리스트 words가 매개변수로 주어질 때, 단어를 모두 적으면 몇 줄이 되는지 return 하도록 solution 함수를 완성해주세요.
# 다음과 같이 import를 사용할 수 있습니다.
# import math
def solution(K, words):
# 여기에 코드를 작성해주세요.
answer = 0
wds=words.copy()
bk=[]
for i in range(len(words)):
if i<len(words)-1:
if len(words[i])<K and len(words[i+1])<=K-1-len(words[i]):
if words[i] in wds:
bk.append([words[i]+" "+words[i+1]])
wds[i]='1'
wds[i+1]='1'
else:
continue
else:
if words[i] in wds:
bk.append([words[i]+" "*(K-len(words[i]))])
wds[i]='1'
else:
continue
else:
if words[i] in wds:
bk.append([words[i]+" "*(K-len(words[i]))])
wds[i]='1'
answer=len(bk)
print(bk)
return answer
# 아래는 테스트케이스 출력을 해보기 위한 코드입니다.
K = 10
words = ["nice", "happy", "hello", "world", "hi"]
ret = solution(10, words)
# [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
print("solution 함수의 반환 값은", ret, "입니다.")
wds=words.copy()에 copy를 안써줘서 1시간은 헤맨듯하다..
그리고 한 칸에 최대 두 단어가 최대라서 세미하드코딩이다.
그래서 제출하면 11개 케이스 중에 2개 맞춰서 18점 나온다 푸하하 빡쳐 하
'자격증 > COS Pro 1급 Python' 카테고리의 다른 글
[COS Pro python 1급] 체스의 나이트 (0) | 2023.03.12 |
---|---|
[COS Pro python 1급] 2차원 리스트 방향좌표로 접근하기 (0) | 2023.03.12 |
[COS Pro python 1급] 모의고사 8번 (0) | 2023.03.09 |
[COS Pro python 1급] 모의고사 4번, 6번, 7번 (0) | 2023.03.07 |
[COS Pro python 1급] 모의고사 2번, 3번, 5번 (0) | 2023.03.07 |