# 코딩 페스티벌 파이썬 100제
<문제 61>
문자열을 입력받고 연속되는 문자열을 압축해서 표현하는 문제이다.
ex) aaabbbbcdddd를 입력하면 a3b4c1d4가 출력되는 형태이다.
해답을 조금 베껴왔다. 내가 작성한 코드는 비슷하지만 일부분의 출력 값에서 이상하게 나와서
정확한 해답을 가져왔다. 잠깐 설명을 해보자면 입력받은 문자열을 빈 스트링에 저장하는 하나씩 저장하는 형태이다.
1) a가 3개 있으면 count 값은 1씩 증가해서 3이되고, a != b이기 때문에 new_string에 a + 3 값을 저장시켜준다.
2) 다음 b부터 시작하도록 x = i로 만들어주고 count 값은 1로 초기화시켜준다.
3) 마지막에 d값은 for문 밖에서 써줘야 출력이 가능하므로 작성해준다.
<문제 62>
조건을 충족해서 20190923을 출력하는 문제인데 조금 풀 필요가 없는 문제라고 생각해서 넘어가려고 한다.
<문제 63>
입력 받은 문자열의 앞 글자만 줄여 출력하는 문제이다.
ex) 복잡한 세상 편하게 살자 -> 복세편살
split으로 띄어쓰기에서 분리된 단어를 가지고서 0번째부터 text의 길이까지 슬라이싱으로 출력해주었다.
<문제 64>
화물 종류는 7kg, 3kg 두 가지이고 가장 적게 화물을 옮길 수 있는 횟수를 출력하는 문제이다.
ex) 정량이 24kg이면 3kg 8개를 옮기는 것이 아닌 7kg 3개, 3kg 1개 4개로 적게 옮겨야 한다. 두 개로 정량 N이 안되면 -1 출력.
사고력이 딸려서 조금 복잡하게 풀었다.
1) 14kg나 21kg같이 7로 나누어 떨어지면 그 몫을 출력한다. (2, 3개)
2) 3kg나 6kg같이 7 없이 3으로 나누어 떨어지면 그 몫을 출력한다. (1, 2개)
3) 24kg같은 무게는 7로 먼저 나눈 나머지에 3으로 나눈 나머지가 0이면
각 7과 3으로 나눈 몫을 더한 값을 출력한다. (4개)
4) 모두 아니라면 -1을 출력한다.
해답에서는 while과 if문의 중첩으로 풀었는데,
처음에 while문을 생각하다가 더 복잡하게 생각하더니 결국 복잡하게 풀어버렸다.
해답처럼 간결하게 풀면 될 것이다.. (해답 페이지를 참고하시길)
<문제 65>
a = [1, 2, 3, 4] / b = ['a', 'b', 'c', 'd'] 이런 리스트가 있을 때 [[1, 'a'], ['b',2], [3, 'c'], ['d',4]]
이런 식으로 a, b 리스트가 번갈아가면서 출력하게 만드는 문제이다.
input()으로 받지 않고 문제 예제에 있는 a, b처럼 직접 받아서 출력하게 만들었다.
input()으로 받아서 출력하는 것은 조금만 변형해서 비슷하게 작성한 해답에서 볼 수 있다.
새 리스트를 x에 만들어주면 된다.
이때, i % 2 == 1은 홀수를 나타내는데 인덱스에 홀수번째에 앞과 뒤가 바뀌게 출력시켜주면 된다.
출력은 다음과 같다.
현재 준비하고 있는 게 있어서 준비하는 게 끝나면
다시 문제풀이 시작하고 ios 공부도 이어서 하려고 한다.
모두 준비하는 게 있다면 화이팅하시길!!
오늘도 모두 수고하셨습니다 : )
'알고리즘(algo) > 코페100제' 카테고리의 다른 글
파이썬 #15 (format, sort) (0) | 2021.01.09 |
---|---|
파이썬 #14 (콤마 재귀) (0) | 2021.01.08 |
파이썬 #13 (하노이의 탑) (0) | 2021.01.07 |
파이썬 #12 (정렬 알고리즘) (0) | 2021.01.07 |
파이썬 #11 (버블 정렬) (0) | 2021.01.06 |