
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를 따로 구해줄 필요가 없었던 것..!