[これがコードテスト]CHAPTER 11 GRADY問題(2)
1718 ワード
2021.06.26
<2>乗算または加算
からなる文字列s 左から右へ、数字の間に「*」または「+」演算子を付けて、最大の数字 にします.計算は左から右へ の順で行う.
しかし、もう0万をあげようと思ったら、1を乗じた.
例の問題では1がないので、撃たれたように見えますが、
回答例<3>文字列の反転
0と1からなる文字列s sでは、1つまたは複数の連続する数字(0->1,1->0) をキャプチャして反転する.は同じ最小反転数 である.
回答例
缲り返すことをどう认识するか分からない.
明日勉強するときに聞かなければなりません.
<2>乗算または加算
数字
私が書いたコード
# 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がないので、撃たれたように見えますが、
回答例
# 답
# 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)
<3>文字列の反転
質問する
# 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))
実は私は答えを見て、私はあまり理解していません.缲り返すことをどう认识するか分からない.
明日勉強するときに聞かなければなりません.
Reference
この問題について([これがコードテスト]CHAPTER 11 GRADY問題(2)), 我々は、より多くの情報をここで見つけました https://velog.io/@lhw8187/이것이코딩테스트다-CHAPTER-11-그리디-문제2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol