-
[프로그래머스] 알고리즘 난이도 중하 8문제 (Python) -3Algorithm 2022. 2. 12. 00:34
1) 이상한 문자 만들기
https://programmers.co.kr/learn/courses/30/lessons/12930
처음에 코드 실행은 통과 됐는데, 채점하면 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
*방법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
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
- 런타임 에러 발생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
*방법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
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
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
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
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