1) 이상한 문자 만들기
https://programmers.co.kr/learn/courses/30/lessons/12930
코딩테스트 연습 - 이상한 문자 만들기
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을
programmers.co.kr
처음에 코드 실행은 통과 됐는데, 채점하면 18점이었다.
질문하기에 다른 분이 남긴 테스트 코드 추가해서 다시 확인했다.
Parameters: "sp ace"
Return: "Sp AcE"
def solution(s):
answer = ""
space = 0
for i in range(len(s)):
if(s[i] == " "): # 공백일 때
answer += " "
space = 0
else:
if(space % 2 == 0):
answer += s[i].upper()
space += 1
else:
answer += s[i].lower()
space += 1
if(i < len(s)-1):
answer += " "
return answer
2) 자릿수 더하기
https://programmers.co.kr/learn/courses/30/lessons/12931
코딩테스트 연습 - 자릿수 더하기
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한사항 N의 범위 : 100,000,000 이하의 자연수 입출
programmers.co.kr
*방법1
def solution(n):
answer = 0
strN = str(n)
arr = []
for i in range(len(strN)):
arr.append(strN[i])
for i in range(len(arr)):
answer += int(arr[i])
return answer
*방법2
def solution(n):
tot = sum(map(int, list(str(n))))
return tot
3) 자연수 뒤집어 배열로 만들기
https://programmers.co.kr/learn/courses/30/lessons/12932
코딩테스트 연습 - 자연수 뒤집어 배열로 만들기
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 제한 조건 n은 10,000,000,000이하인 자연수입니다. 입출력 예 n return 12345
programmers.co.kr
def solution(n):
temp = []
answer = []
for i in str(n)[::-1]: # 역순으로
temp.append(i)
for i in range(len(temp)):
answer.append(int(temp[i]))
return answer
4) 정수 내림차순으로 배치하기
https://programmers.co.kr/learn/courses/30/lessons/12933
코딩테스트 연습 - 정수 내림차순으로 배치하기
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 n은 1이
programmers.co.kr
- 런타임 에러 발생1 (2, 3, 11에서)
import math
def solution(n):
answer = ""
max = 0;
list = []
for i in str(n):
list.append(i)
for i in range(len(list)):
for j in range(i):
if(int(list[i]) > int(list[j])):
list[i], list[j] = list[j], list[i]
for i in range(len(list)):
answer += list[i]
return int(answer)
- 런타임 에러 발생2 (2, 3, 11에서)
def solution(n):
numList = list(str(n))
numList.sort(reverse = True)
return int("".join(numList))
*정답코드
def solution(n):
n = int(n) # 이거 안해주면 2,3,11 런타임에러
n = list(str(n))
n.sort(reverse = True)
return int("".join(n))
5) 정수 제곱근 판별
https://programmers.co.kr/learn/courses/30/lessons/12934
코딩테스트 연습 - 정수 제곱근 판별
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함
programmers.co.kr
*방법1
import math
def solution(n):
x = math.sqrt(n)
temp = str(x).split(".") # 소수점 기준으로 split ex) 11.0일 경우 ["11", "0"]
if(temp[1] == "0"): # 소수점 이하가 0일 경우 정수 부분만 x로 바꿈
x = int(temp[0])
if(type(x) == int):
return (x+1) * (x+1)
else:
return -1
*방법2 (22/02/14 업데이트)
- math.trunc 사용하여 값 x를 Integral로 자른 값 반환
참고: https://docs.python.org/ko/3/library/math.html
math — 수학 함수 — Python 3.10.2 문서
math — 수학 함수 이 모듈은 C 표준에서 정의된 수학 함수에 대한 액세스를 제공합니다. 이 함수는 복소수와 함께 사용할 수 없습니다; 복소수를 지원해야 하면 cmath 모듈에 있는 같은 이름의 함
docs.python.org
import math
def solution(n):
x = math.trunc(math.sqrt(n))
if(x*x == n):
return (x+1) * (x+1)
else:
return -1
6) 제일 작은 수 제거하기
https://programmers.co.kr/learn/courses/30/lessons/12935
코딩테스트 연습 - 제일 작은 수 제거하기
정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1
programmers.co.kr
def solution(arr):
min = 10000;
for i in arr:
if(i < min):
min = i
arr.remove(min)
if(len(arr) == 0):
arr.append(-1)
return arr
7) 콜라츠 추측
https://programmers.co.kr/learn/courses/30/lessons/12943
코딩테스트 연습 - 콜라츠 추측
1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2
programmers.co.kr
def solution(num):
answer = 0; cnt = 0
while(num != 1):
if(cnt > 500):
return -1
if(num % 2 == 0):
num = int(num / 2)
else:
num = int(num * 3 + 1)
cnt+=1
return cnt
8) 하샤드 수
https://programmers.co.kr/learn/courses/30/lessons/12947
코딩테스트 연습 - 하샤드 수
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하
programmers.co.kr
import math
def solution(x):
tot = sum(map(int, list(str(x)))) # 각 자릿수 합산
if(x % tot == 0):
return True
else:
return False
'Algorithm' 카테고리의 다른 글
[백준 알고리즘] 10773번: 제로(스택) - Python (0) | 2022.02.28 |
---|---|
[프로그래머스] 알고리즘 난이도 중/중상 12문제 (Python) -5 (0) | 2022.02.20 |
[프로그래머스] 알고리즘 기초 10문제 (Python) -2 (0) | 2022.02.11 |
[프로그래머스] 알고리즘 기초 10문제 (Python) (0) | 2022.02.11 |
[백준 알고리즘] 10773번: 제로 (JavaScript) (0) | 2022.02.09 |