[코테준비]]프로그래머스 코딩 기초 트레이닝 Python <<조건문>> DAY5
https://school.programmers.co.kr/learn/challenges/training?order=acceptance_desc&languages=python3
코딩 기초 트레이닝 | 프로그래머스 스쿨
프로그래밍 언어를 처음 접하거나 프로그래밍 언어에 익숙해지고 싶다면? 코딩 역량을 탄탄하게 길러주는 코딩 기초 트레이닝으로 차근차근 코딩에 대한 기초 감각을 길러 보세요.
school.programmers.co.kr
프로그래머스 코딩 기초 트레이닝 연습풀이입니다. 모든 문제의 저작권은 프로그래머스에게 있으며 문제가 됐을 시 삭제하겠습니다.
DAY5 조건문
문자열 섞기
문제 설명 :
문자열 code가 주어집니다. code를 앞에서부터 읽으면서 만약 문자가 "1"이면 mode를 바꿉니다. mode에 따라 code를 읽어가면서 문자열 ret을 만들어냅니다..............단, 시작할 때 mode는 0이며, return 하려는 ret가 만약 빈 문자열이라면 대신 "EMPTY"를 return 합니다.
입출력 예
code result
"abc1abc1abc" | "acbac" |
지난번에 했던 반복문의 조금 으용...... 그냥 반복문 몇 개 돌리면 된다
다만 순서가 조금 중요할듯...! 난 처음에 MODE에 대한 조건을 생각을 안해서 틀렸다 + 마지막 문장, ret 이 빈 문자열일 경우도 생각해주기... 좀 오래걸렸지만 다른 사람 풀이 보면 2줄컷도 있긴 함...ㅋㅋㅋ
++ ^= xor 연산자로 푸신분도 계시긴 함
def solution(code):
ret = ""
mode = 0
for idx in range(len(code)):
if mode == 0:
if code[idx] != "1":
if idx % 2 == 0:
ret += code[idx]
else:
continue
else:
mode = 1
else:
if code[idx] != "1":
if idx % 2 == 1:
ret += code[idx]
else:
continue
else:
mode = 0
if ret == "":
return "EMPTY"
else:
return ret
문자열 섞기
문제 설명 :
두 정수 a, d와 길이가 n인 boolean 배열 included가 주어집니다. 첫째항이 a, 공차가 d인 등차수열에서 included[i]가 i + 1항을 의미할 때, 이 등차수열의 1항부터 n항까지 included가 true인 항들만 더한 값을 return 하는 solution 함수를 작성해 주세요.
입출력 예
a d included result
3 | 4 | [true, false, false, true, true] | 37 |
7 | 1 | [false, false, false, true, false, false, false] | 10 |
등차수열 공식만 알고 있으면 됨. 등차수열 합 = 첫째항 + 공차 * i 번째
++ if[icluded]라는 조건문을 for 문 앞에 넣어주면, 배열안에 있는 거 따로 빠짐!!
def solution(a, d, included):
answer = 0
for i in range(len(included)):
if included[i]:
answer += a + i*d
return answer
주사위게임2
문제 설명 :
1부터 6까지 숫자가 적힌 주사위가 세 개 있습니다. 세 주사위를 굴렸을 때 나온 숫자를 각각 a, b, c라고 했을 때 얻는 점수는 다음과 같습니다.
- 세 숫자가 모두 다르다면 a + b + c 점을 얻습니다.
- 세 숫자 중 어느 두 숫자는 같고 나머지 다른 숫자는 다르다면 (a + b + c) × (a2 + b2 + c2 )점을 얻습니다.
- 세 숫자가 모두 같다면 (a + b + c) × (a2 + b2 + c2 ) × (a3 + b3 + c3 )점을 얻습니다.
세 정수 a, b, c가 매개변수로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.
입출력 예
a b c result
2 | 6 | 1 | 9 |
5 | 3 | 3 | 473 |
4 | 4 | 4 | 110592 |
두 수만 같을 때, elif a==b or a==c or b==c: 이조건만 잘생각하면 쉬운 문제였다!
다만 set으로 해서 중복x 숫자세는 성질을 이용하는 것도 색다른 풀이일 것 같다
def solution(a, b, c):
answer = 0
if a == b == c:
answer = (a+b+c) * (a**2 + b**2 + c**2) * (a**3 + b**3 + c**3)
elif a==b or a==c or b==c:
answer = (a+b+c) * (a**2 + b**2 + c**2)
else:
answer = (a+b+c)
return answer
원소들의곱과합
문제 설명 :
정수가 담긴 리스트 num_list가 주어질 때, 모든 원소들의 곱이 모든 원소들의 합의 제곱보다 작으면 1을 크면 0을 return하도록 solution 함수를 완성해주세요.
num_list result
[3, 4, 5, 2, 1] | 1 |
[5, 7, 8, 3] | 0 |
처음에 원소들의 곱을 p라 설정해야했는데 p=1 기본값을 설정을 꼭 해야한다...!
def solution(num_list):
p = 1
for num in num_list:
p *= num
if p<sum(num_list)**2:
answer = 1
else:
answer =0
return answer
이어붙인 수
문제 설명 :
정수가 담긴 리스트 num_list가 주어집니다. num_list의 홀수만 순서대로 이어 붙인 수와 짝수만 순서대로 이어 붙인 수의 합을 return하도록 solution 함수를 완성해주세요.
입출력
num_list result
[3, 4, 5, 2, 1] | 393 |
[5, 7, 8, 3] | 581 |
여긴 list이기 때문에 기본적인 값을 빈걸로 설정해야 함. 그리고 리스트 우너래 값이 int이므로 str 형변환 필수
def solution(num_list):
o_sum = ""
e_sum = ""
for i in num_list:
if i%2==0:
o_sum += str(i)
else:
e_sum += str(i)
return int(o_sum) + int(e_sum);