2021.06.26
- 숫자로만 이루어진 문자열 s
- 왼쪽부터 오른쪽으로 하나씩 숫자 사이에 '*' 혹은 '+' 연산자를 넣어 가장 큰 수가 되록 함
- 계산은 왼쪽부터 오른쪽으로 순서대로 진행
# s입력 받기
s = input()
# 아이디어
# 0이 있으면 더하고, 아니면 모두 곱한다
# 처음 시작 숫자
number = int(s[0])
for i in range(1, len(s)):
if number == 0:
number += int(s[i])
else:
if int(s[i]) == 0:
number += int(s[i])
else:
number *= int(s[i])
print(number)
어찌저찌 답은 나왔다.
하지만 0만 더해줄 생각하고 1은 생각하지 못해서 1도 곱해버렸다.
예시 문제에 1이 없어서 맞은 것처럼 보인 것이였다,,
답안 예시
# 답
# 0과 1인경우 더하기, 나머지 곱하기
data = input()
# 첫 번째 문자를 수자로 변경하여 대입
result = int(data[0])
for i in range(1, len(data)):
# 두 수 중에서 하나라도 0 혹은 1인 경우 더하기
num = int(data[i])
if num <= 1 or result <= 1:
result += num
else:
result *= num
print(result)
문제
- 0과 1로만 이루어진 문자열 s
- s에서 연속된 하나 이상의 숫자를 잡고 뒤집기(0 -> 1, 1 -> 0)
- 모두 같은 숫자가 되게하는 최소 뒤집기 수
# s 입력 받기
s = input()
# 아이디어
# 가장 처음 반복되는 숫자를 뒤집는다
# 뒤집기 수
count = 0
number = []
for j in range(0, len(s)-1):
if int(s[j]) != int(s[j+1]):
count += 1
print(count)
처음에는 반복되는 숫자들을 뽑아서 그 그룹만큼 카운트를 하고 싶었는데,
s
가 010001
이라고 치면 000
을 어떻게 뽑아내야할지 몰라 포기했다...
답안 예시
data = input()
count0 = 0
count1 = 0
if data[0] == '1':
count0 += 1
else:
count1 += 1
for i in range(len(data) -1):
if data[i] != data[i+1]:
if data[i+1] == '1':
count0 += 1
else:
count1 += 1
print(min(count0, count1))
사실 답을 봤는데, 이해가 잘 안된다.
반복되는 경우를 어떻게 인식하는지를 모르겠다..
내일 스터디할 때 물어봐야겠다