본문 바로가기

알고리즘 공부/프로그래머스 > Python3

(44)
[프로그래머스] 문자열 내림차순으로 배치하기 https://programmers.co.kr/learn/courses/30/lessons/12917?language=python3 코딩테스트 연습 - 문자열 내림차순으로 배치하기 문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 programmers.co.kr [정답] 1. s를 리스트 형태로 list_s에 넣는다. (sort()함수를 사용하기 위해서) 2. list_s를 sort(reverse=True)함수를 적용하여 내림차순으로 배치한다. 3. answer은 문자열 형태이므로, for문을 돌면서 리스트 list_s의 문자열들을 하나씩 answer에 더해준다..
[프로그래머스] 행렬의 덧셈 https://programmers.co.kr/learn/courses/30/lessons/12950 코딩테스트 연습 - 행렬의 덧셈 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요 programmers.co.kr [정답1] 1. len(arr1)만큼 for문을 돈다. 중첩 for문으로 len(arr1[i])만큼 for문을 돈다. 2. arr1[i][j]에 arr2[i][j]을 더해서 넣는다. 3. arr1을 answer에 넣는다. 4. answer을 return 한다. [정답2] [정답1]과 같은 방법으로 하지만, answer을 미리 정의해..
[프로그래머스] 올바른 괄호 https://programmers.co.kr/learn/courses/30/lessons/12909 코딩테스트 연습 - 올바른 괄호 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 ()() 또는 (())() 는 올바른 괄호입니다. )()( 또는 (()( 는 올바르지 않은 괄호 programmers.co.kr [정답] 1. 문자열을 돌면서 '('이면 count에 +1을 해주고, ')'이면 count에 -1을 해준다. 2. for문 루프를 돌면서 만약 count==-1가 된다면, ')'가 하나 더 있는 경우이므로, 이미 올바르지 않은 괄호이므로 answer=False로 해준다. ex) '())' 3. for문 루프가 끝나고, coun..
[프로그래머스] N개의 최소공배수 https://programmers.co.kr/learn/courses/30/lessons/12953 코딩테스트 연습 - N개의 최소공배수 두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배 programmers.co.kr [정답] 1. i를 증가시키면서 최소공배수를 찾을 것이다. 즉 i가 리스트에 있는 수들로 다 나누어진다면 i가 최소공배수가 된다. 2. answer==0일 동안, 즉 answer인 최소공배수를 찾을 동안 while문을 돈다. 3. 변수 count는 리스트에 있는 수 중 i로 나누어지지 않는 수가 있다면 기록하기 위한 변..
[프로그래머스] 최댓값과 최솟값 https://programmers.co.kr/learn/courses/30/lessons/12939 코딩테스트 연습 - 최댓값과 최솟값 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 (최소값) (최대값)형태의 문자열을 반환하는 함수, solution을 완성하세요. 예를 programmers.co.kr [정답] 1. 문자열 s을 공백 기준으로 나누어 자료형을 int로 변경하여 list형태로 list_s에 넣어준다. 2. min(), max()함수를 사용하여 s_min=list_s의 최솟값/ s_max=list_s의 최댓값을 구한다. 3. s_min과 s_max의 자료형을 str로 바꾸어 answer에 넣어준다. 4. answer을 ret..
[프로그래머스] 2016년 https://programmers.co.kr/learn/courses/30/lessons/12901 코딩테스트 연습 - 2016년 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까 programmers.co.kr [정답] 1. 문제에서 2016년 1월 1일은 금요일이라고 한다. 진짜 달력을 찾아보니 정말로 금요일이었다. 그래서 calendar모듈을 사용하기로 하였다. ( 어느정도 꼼수를 부린 것이다,,ㅎㅎ) 2. calendar.weekday()를 사용하여 요일에 대한 숫자를 n_date에 넣는다. 3. 리스트 date에 요일을 적..
[프로그래머스] 내적 https://programmers.co.kr/learn/courses/30/lessons/70128?language=python3 코딩테스트 연습 - 내적 길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요. 이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 programmers.co.kr [정답] 1. 배열 a,b가 길이가 같으므로 for문은 0~len(a)로 돌린다. 2. for문 루프를 돌면서 a[i]*b[i]를 answer에 계속 넣어주어 내적을 구한다. 3. answer을 return한다.
[프로그래머스] 3진법 뒤집기 https://programmers.co.kr/learn/courses/30/lessons/68935 코딩테스트 연습 - 3진법 뒤집기 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수 programmers.co.kr [정답] 1. 진법 계산방법을 사용하여 n이 0이 아닐 동안, n%3을 해주어 리스트 num_3에 넣고 n을 n//3으로 해준다. 만약 n=45일 경우, num_3=[0,0,2,1]이 된다. ( 입출력 예시에서는 3진법으로 바꾸고 앞뒤 반전을 해주어 10진법으로 표현하였는데, num_3자체가 앞뒤 반전을 해준 모양과..