문자열을 입력받고 연속되는 문자열을 압축해서 표현
입력aaabbbbcdddd
출력
a3b4c1d4
m = 'aaabbbbcddddaa'
changeString = m[0]
count = 0
result = ''
for i in m :
if changeString == i :
count+=1
else :
result += str(count) + changeString
count = 1
changeString = i
result += str(count) + changeString
print(result)
import re
user_input = 'aaabbbbcddddaa'
rule = re.findall('(\\w)(\\1*)',user_input)
str1 = ''
for i,j in rule :
str1+= str(len(j)+1) + i
print(str1)
기준은
1. 코드 내에 숫자가 없어야 합니다.
2. 파일 이름이나 경로를 사용해서는 안됩니다.
3. 시간, 날짜 함수를 사용해서는 안됩니다.
4. 에러 번호 출력을 이용해서는 안됩니다.
5. input을 이용해서는 안됩니다.
s = 'bccddddddddd'
zero = s.count('a')
one = s.count('b')
two = s.count('c')
nine = s.count('d')
print(two,zero,one,nine,one,zero,one,one,sep='')
어떤 입력값이 주어지면 앞 글자만 줄여서 출력
입력복잡한 세상 편하게 살자
출력
복세편살
str1 = '복잡한 세상 편하게 살자'
a = list(map(str,str1.split()))
b = map(str,str1.split()) #이것도 가
result=''
for i in a :
result+=i[0]
print(result)
정량N에 정확히 맞춰야만 움직이는 화물용 엘베
화물은 7kg,3kg 두 가지이며 팔이 아픈 은후는 가장 적게 화물을 옮기고 싶습니다.
예를 들어 정량이 24kg이라면 3kg 8개 옮기는 것 보단
7kg 3개, 3kg 1개 즉 4개로 더 적게 옮길 수 있습니다.
입력정량 N이 입력됩니다.
출력
가장 적게 옮길 수 있는 횟수를 출력합니다 만약 어떻게 해도 정량이 N이 되지 않는다면 -1을 출력
weight = 31
quota = 0
while weight > 2 :
if weight > 7 :
quota += weight // 7
weight = weight % 7
else :
quota += weight // 3
weight = weight % 3
if weight == 0 :
print(quota)
else :
print(-1)
a = [1,2,3,4]
b = [a,b,c,d]
이런 리스트가 있을 때 [[1,a],[2,b],[3,c],[4,d]] 이런 식으로 a,b 리스트가 번갈아가면서 출력되게 해주세요
방법1
a = [1,2,3,4]
b = ['a','b','c','d']
c = []
for i in range(len(a)) :
if i%2 == 0 :
c.append([a[i],b[i]])
else :
c.append([b[i],a[i]])
print(c)
방법2
a = [1,2,3,4]
b = ['a','b','c','d']
c = []
count = 0
for i,j in zip(a,b) :
if count % 2 == 0 :
c.append([i,j])
else :
c.append([j,i])
count+=1
print(c)
탑을 쌓기 위해 각 크기별로 준비된 블럭들을 정해진 순서에 맞게 쌓아야 합니다.
1. 블럭은 알페벳 대문자로 표기
2. 규칙에 없는 블럭이 사용될 수 있습니다.
3. 중복된 블럭은 존재하지 않습니다.
입력탑 = ["ABCDEF","BCAD","ADEFQRX","BEDFG","EFGHZ"] 규칙 = "ABD"
출력
["가능","불가능","가능","가능","가능"]
top = ["ABCDEF","BCAD","ADEFQRX","BEDFG","EFGHZ"]
rule = "ABD"
def allString(allString, rule) :
list = []
result = []
for subString in allString :
for word in subString :
if word in rule :
list.append(rule.index(word))
result.append(match(list))
list= []
return result
def match(sequence) :
if sequence == sorted(sequence) :
return "가능"
else :
return "불가능"
print(allString(top,rule))
참가자인 민두는 몇명의 사람들과 악수를 한 후 중간에 일이 생겨 집으로 갔다.
이 행사에서 진행된 악수는 총 n 번이라 했을 때
민두는 몇번의 악수를 하고 집을 갔고 이때 민두를 포함한 행사 참가자는 몇명일까?
- 악수는 모두 1대 1로 진행이 된다.
- 민두를 제외한 모든 참가자는 자신을 제외한 참가자와 모두 한번씩 악수를 한다.
- 같은 상대와 중복된 악수는 카운트 하지 않는다.
- 민두를 제외한 참가자는 행사를 모두 마쳤다.
입력 : 행사에서 진행된 악수 횟수 59
출력 : [민두의 악수횟수, 행사참가자][4,12]
"""
악수 n번
민두 악수횟수 m번
행사 참가자 수 p명
n = (p-2)+...+1 +count
n = (p-2)(p-1)/2 +count
"""
n= 59
count = 0
p = 0
answer = []
while True :
a = p* (p+1) // 2
p+=1
if n< a :
break
count = n - (p-2)*(p-1)//2
print(count,p)
입력
["12:30","13:20","14:13"] "12:40"
출력
['지나갔습니다.', '00:00', '00:40', '01:33']
- 버스 시간표와 현재 시간이 입력으루 주어집니다.
- 출력 포맷은 "00시00분"입니다.
만약 1시간 3분이 남았으면 "01시간03분"으로 출력해야 합니다.- 버스 시간표에 현재 시간보다 이전인 버스가 있다면 '지나갔습니다.'라고 출력합니다.
def minute(time) :
# a = int(time.split(':')[0])
# b = int(time.split(':')[1])
# print(a, b)
# print(int(time.split(':')[0]) * 60 + int(time.split(':')[1]))
return int(time.split(':')[0]) * 60 + int(time.split(':')[1])
def changeTime(time2) :
return '{0:02d}:{1:02d}'.format(time2//60,time2%60)
# 02d 는 d를 최소 너비 2 로 지정하고 왼쪽에 0을 채움, d는 정수형
def sol(timeList,nowTime) :
answer = []
for time1 in timeList :
if minute(time1) - minute(nowTime) < 0 :
answer.append('지나갔습니다.')
else :
answer.append(changeTime(minute(time1)-minute(nowTime)))
return answer
timeList = ["12:30","12:40","13:20","14:13"]
print(sol(timeList,"12:40"))
from itertools import combinations_with_replacement
def sosu(n) :
num = set(range(2,n+1))
for i in range(2,n+1) :
if i in num :
num -= set(range(2*i,n+1,i))
return num
def goldbach(sosuList,number) :
result = []
for i in combinations_with_replacement(sosuList,2) :
if i[0]+i[1] == number :
result.append(i)
return result
n = 100
print(goldbach(sosu(n),n))
출력 : [(3, 97), (11, 89), (17, 83), (29, 71), (41, 59), (47, 53)]
행렬 2개가 주어졌을 때 곱할 수 있는 행렬인지 확인하고 곱할 수 있다면 그 결과를, 곱할 수 없다면 -1을 출력하는 프로그램을 만들어주세요.
- 라이브러리 사용은 금지
입력a = ([1,2], [2,4]) b = ([1,0], [0,3])
출력 : ([1,6],[2,12])
import numpy as np
a = ([1,2],[2,4])
b = ([1,0],[0,3])
procession_a = np.array(a)
procession_b = np.array(b)
print(procession_a.dot(procession_b))