https://school.programmers.co.kr/learn/challenges/training?order=acceptance_desc&languages=python3
코딩 기초 트레이닝 | 프로그래머스 스쿨
프로그래밍 언어를 처음 접하거나 프로그래밍 언어에 익숙해지고 싶다면? 코딩 역량을 탄탄하게 길러주는 코딩 기초 트레이닝으로 차근차근 코딩에 대한 기초 감각을 길러 보세요.
school.programmers.co.kr
프로그래머스 코딩 기초 트레이닝 연습풀이입니다.
모든 문제의 저작권은 프로그래머스에게 있으며 문제가 됐을 시 삭제하겠습니다.
DAY3 연산
문자열 섞기
문제 설명 :
길이가 같은 두 문자열 str1과 str2가 주어집니다. 두 문자열의 각 문자가 앞에서부터 서로 번갈아가면서 한 번씩 등장하는 문자열을 만들어 return 하는 solution 함수를 완성해 주세요
입출력 예
str1 str2 result
"aaaaa" | "bbbbb" | "ababababa |
함수
def 함수이름(매게변수):
수행할 목록
return 함수의 결괏값
입출력 예시는 보면 str1 / str2 가 번갈아나온다. 조금 더 풀어쓰면 str1 첫번째 문자, str2 첫번째 문자, str1 두번째 문자, str2 두번째 문자..........str1 마지막 문자, str2 마지막 문자로 반복되는 것을 알 수 있다. 따라서 반복문을 이용한다!
슈도코드
def solution(str1, str2):
answer = ''
for i in range(len(st1):
answer += str1[i]+str2[i]
return answer
문자 리스트를 문자열로 변환하기
문제 설명 :
문자들이 담겨있는 배열 arr가 주어집니다. arr의 원소들을 순서대로 이어 붙인 문자열을 return 하는 solution함수를 작성해 주세요.
입출력
arrresult
["a","b","c"] | "abc" |
위에 문자와 동일하게 배열 내 a번째, b번쨰를 순서대로 나오면 된다. 배열은 [] 형식이 아니기 때문에 그냥 문자열 자체로 뽑으면 됨! 원소들을 문자열로 뽑아야하므로 str( ) 로 뽑기
def solution(arr):
answer = ''
for a in arr:
answer += str(arr[a])
return answer
>> 처음에 일너식으로 했을 때 list indices must be integers or slices, not str 오류 뜸
>> 리스트 몇 번째 일 때만 [] 이렇게 해야함.
올바른 정답!!
def solution(arr):
answer = ''
for a in arr:
answer += str(a)
return answer
문자 열 곱하기
문제 설명 :
문자열 my_string과 정수 k가 주어질 때, my_string을 k번 반복한 문자열을 return 하는 solution 함수를 작성해 주세요.
입출력 예
my_string k result
"string" | 3 | "stringstringstring" |
"love" | 10 | "lovelovelovelovelovelovelovelovelovelove" |
그대로 곱했더니 됐다!
def solution(my_string, k)
return my_string * k
더크게 합치기
문제 설명 :
연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.
- 12 ⊕ 3 = 123
- 3 ⊕ 12 = 312
양의 정수 a와 b가 주어졌을 때, a ⊕ b와 b ⊕ a 중 더 큰 값을 return 하는 solution 함수를 완성해 주세요.
단, a ⊕ b와 b ⊕ a가 같다면 a ⊕ b를 return 합니다.
입출력 예
abresult
9 | 91 | 991 |
89 | 8 | 898 |
슈도코드
함수 만들어서, str(a)+str(b) 랑 str(b) + str(a) 비교하면 되겠다! 다만 ab, ba 미리 안정하고 하면 int 형할 때 좀 헷갈려서 꼬임. 귀찮더라도 변수 설정하고 가면 좋을듯
def solution(a, b):
ab = str(a) + str(b)
ba = str(b) + str(a)
if ab>ba:
answer = int(ab)
else:
answer = int(ba)
return answer
두 수의 연산값 비교하기
문제 설명
연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.
- 12 ⊕ 3 = 123
- 3 ⊕ 12 = 312
양의 정수 a와 b가 주어졌을 때, a ⊕ b와 2 * a * b 중 더 큰 값을 return하는 solution 함수를 완성해 주세요.
단, a ⊕ b와 2 * a * b가 같으면 a ⊕ b를 return 합니다.
입출력 예
a b result2 | 91 | 364 |
91 | 2 | 912 |
이번엔ㄴ 바로 int를 앞에 씌움. 두수 비교 할 때 if 문 써도 되지만 길어져서 그냥 max로 화인!
def solution(a, b):
ab = int(str(a) + str(b))
ba = 2*a*b
return max(ab,ba)
DAY4 연산
n의 배수
문제 설명
정수 num과 n이 매개 변수로 주어질 때, num이 n의 배수이면 1을 return n의 배수가 아니라면 0을 return하도록 solution 함수를 완성해주세요.
입출력 예
num n result
98 | 2 | 1 |
34 | 3 | 0 |
num이 n의 배수다? >> num이 n으로 나누어진다!!! >> % 나머지 연산자 사용하자
day2 복습
나눗셈 후 나머지를 반환하는 % 연산자 ex) 7 % 4 > 3
나눗셈 // 연산자 ex) 7 / 4 > 1.75
나눗셈 후 몫을 반환하는 연산자 ex) 7//4 > 1
def solution(num, n):
if num % n ==0:
answer = 1
else:
answer = 0
retrun answer
공배수
문제 설명
정수 number와 n, m이 주어집니다. number가 n의 배수이면서 m의 배수이면 1을 아니라면 0을 return하도록 solution 함수를 완성해주세요.
입출력 예
number n m result
60 | 2 | 3 | 1 |
55 | 10 | 5 | 0 |
위의 문제를 고대로 이용! 다만 조건이 하나 추가되었느니까 and를 하면 됨.
def solution(num, n, m):
if num % n ==0 and num % m ==0
answer = 1
else:
answer = 0
retrun answer
홀짝에 따라 다른 값 반환하기
문제 설명 :
양의 정수 n이 매개변수로 주어질 때, n이 홀수라면 n 이하의 홀수인 모든 양의 정수의 합을 return 하고 n이 짝수라면 n 이하의 짝수인 모든 양의 정수의 제곱의 합을 return 하는 solution 함수를 작성해 주세요.
입출력예시
n result
7 | 16 |
10 | 220 |
입출력 예 시 설명
- 예제 1번의 n은 7로 홀수입니다. 7 이하의 모든 양의 홀수는 1, 3, 5, 7이고 이들의 합인 1 + 3 + 5 + 7 = 16을 return 합니다.
- 예제 2번의 n은 10으로 짝수입니다. 10 이하의 모든 양의 짝수는 2, 4, 6, 8, 10이고 이들의 제곱의 합인 22 + 42 + 62 + 82 + 102 = 4 + 16 + 36 + 64 + 100 = 220을 return 합니다.
슈도코드
홀짝이다 >> 짝은 num이 2로 나누어진다!!! / 홀은 num이 2로 나누어진다!!! >> % 나머지 연산자 사용하자
def solution(n):
if n % 2 == 1: # n이 홀수인 경우
return 수행할 내용
else: # n이 짝수인 경우
return수행할 내용
홀수인 경우합 계산 > sum 함수 이용반복해서 계산하는 경우 > rangerange함수(시작, 끝-1, 간격) >> range(1, n+1, 2) >>return sum(range(1, n+1, 2))
짝수인경우
합 계산 > sum 함수 이용
반복해서 계산하는 경우 > range
range함수(시작, 끝-1, 간격) >> range(2, n+1, 2)
제곱을 해야 하는 조건이 추가 됨 for문으로 돌림
for i in range (2, n+1, 2)
return i**2
>> 이렇게 되면 sum을 또 어떤 식으로써야하나 고민쓰
>> 그래서 마지막 문장을 한줄로 줄여버리장 !! > i**2 for i in range(2, n+1, 2)
>>return sum(i**2 for i in range(2, n+1, 2))
조건문자열
문제 설명 :
문자열에 따라 다음과 같이 두 수의 크기를 비교하려고 합니다.
- 두 수가 n과 m이라면
- ">", "=" : n >= m
- "<", "=" : n <= m
- ">", "!" : n > m
- "<", "!" : n < m
두 문자열 ineq와 eq가 주어집니다. ineq는 "<"와 ">"중 하나고, eq는 "="와 "!"중 하나입니다. 그리고 두 정수 n과 m이 주어질 때, n과 m이 ineq와 eq의 조건에 맞으면 1을 아니면 0을 return하도록 solution 함수를 완성해주세요.
입출력
ineq eq n m result
"<" | "=" | 20 | 50 | 1 |
">" | "!" | 41 | 78 | 0 |
어떻게 해야할지 모르겠지만, 조건문 4개는 작성하기는 싫었지만,,,,,,,,, 딱히 방법을 모르겠어서 노가다 시작
def solution(ineq, eq, n, m):
if ineq == "<" and eq == "=":
return 1 if n <= m else 0
elif ineq =="<" and eq =="!":
return 1 if n<m else 0
elif ineq == ">" and eq == "=":
return 1 if n>=m else 0
elif ineq == ">" and eq =="!":
return 1 if n>m else 0
else:
return 0
다른 사람 풀이를 봤을 때 eval 이라는 게 있었는데 신박했음
flag에 따라 다른 값 반환하기
문제 설명 :
두 정수 a, b와 boolean 변수 flag가 매개변수로 주어질 때, flag가 true면 a + b를 false면 a - b를 return 하는 solution 함수를 작성해 주세요.
입출력 예
a b flag result
-4 | 7 | true | 3 |
-4 | 7 | false | -11 |
bool 형만 다룰 줄 알면됨. True/ False 임 >> 앞에만 대문자임!!
def solution(a, b, flag):
if flag == True:
return a+b
elif flag == False:
return a-b
'[코테준비] > [코테준비]Python' 카테고리의 다른 글
[코테준비]프로그래머스 코딩 기초 트레이닝 DAY6 Python <조건문, 반복문> (2) | 2023.07.29 |
---|---|
[코테준비]]프로그래머스 코딩 기초 트레이닝 Python <<조건문>> DAY5 (1) | 2023.06.29 |
[코테준비]프로그래머스 코딩 기초 트레이닝 Python DAY1~DAY2 출력 (3) | 2023.06.10 |
[프로그래머스]코테고득점KIT_완전탐색_최소직사각형(python) (0) | 2023.05.06 |
[프로그래머스]코테고득점KIT_스택_같은 숫자는 싫어(java, python) (0) | 2023.05.06 |