def solution(s):
answer = ''
# s에는 둘 이상의 정수가 공백으로 구분되어 있다
nums = s.split()
new_nums = []
for num in nums:
new_nums.append(int(num))
answer += '{0} {1}'.format(min(new_nums), max(new_nums))
return answer
문자열로 나열된 숫자들을 int
형으로 변환해주고 이를 new_nums
에 담아준다. 이후 그 최댓값과 최솟값을 answer
에 담아주면 끝
def solution(s):
s = list(map(int,s.split()))
return str(min(s)) + " " + str(max(s))
map
을 사용하여 간결해짐!
[프로그래머스] Lv.2 JadenCase 문자열 만들기
def solution(s):
# capitalize() : 맨 첫글자만 대문자로 변환
answer = ''
s = s.split(' ')
for i in range(len(s)):
s[i] = s[i].capitalize()
answer = ' '.join(s)
return answer
이 문제.. 그냥 split()
을 쓰면 테스트케이스 몇몇개에서 오답이 뜬다.
찾아보니 split()
은 공백이 몇개든 상관 없이 모든 공백을 하나로 처리하며, split(' ')
문자열 사이사이에 있는 공백만 배열의 분할점으로 이용하되, 공백이 연속하여 나오면 일반 문자 다음에 오는 공백 각각을 하나의 리스트 요소로 처리한다.
다시보니 제한 조건에... 공백문자가 연속해서 나올 수 있습니다.
가 존재..!!
제한조건을 꼼꼼하게 읽도록 하자..🤯
A의 가장 큰 값 * B의 가장 작은 값
으로 계산해서 누적 합을 구해주면 된다.def solution(A,B):
answer = 0
A.sort(reverse = True)
B.sort()
for i in range(len(A)):
answer += (A[i] * B[i])
return answer
0과 1로 이루어진 어떤 문자열 x에 대한 이진 변환을 다음과 같이 정의합니다.
1. x의 모든 0을 제거합니다.
2. x의 길이를 c라고 하면, x를 "c를 2진법으로 표현한 문자열"로 바꿉니다.
0과 1로 이루어진 문자열 s가 매개변수로 주어집니다. s가 "1"이 될 때까지 계속해서 s에 이진 변환을 가했을 때, 이진 변환의 횟수와 변환 과정에서 제거된 모든 0의 개수를 각각 배열에 담아 return 하도록 solution 함수를 완성해주세요.
s
에서 s.count('0')
을 이용해 개수를 세준다. 이를 zerocnt
에 누적해서 더해준다.s
에서 '0'
을 공백으로 치환한다.'0'
이 공백으로 치환된 s
를 bin
함수로 2진수를 구해준 뒤, 2번째 인덱스부터 저장을 해준다. (bin
을 사용할 경우 0b1101
과 같이, 앞에 0b가 붙은 상태로 반환되기 때문)cnt += 1
로 이진 변환 횟수를 더해준다.s
에 1만 남을 때 까지 반복해준다.def solution(s):
cnt = 0 # 이진 변환 횟수
zerocnt = 0 # 제거된 모든 0의 개수
while True:
if s == '1':
break
cnt2 = s.count('0')
zerocnt += cnt2
s = s.replace('0', '')
s = bin(len(s))[2:]
cnt += 1
answer = [cnt, zerocnt]
return answer
def solution(s):
a, b = 0, 0
while s != '1':
a += 1
num = s.count('1')
b += len(s) - num
s = bin(num)[2:]
return [a, b]
어차피 0과 1로만 이루어진 문자열이니 len(s) - len(문자열 내 1의 개수)
를 하면 사라진 0의 개수도 나온다. 나처럼 zerocnt
를 따로 구해줄 필요가 없었던 것..!