본문 바로가기

2021/코딩테스트24

[프로그래머스] Lv.1 정수 제곱근 판별_파이썬 정수 제곱근 판별입니다! 입력받은 n이 x의 제곱이라면, x+1의 제곱 값을 구하고, n이 양의 정수 x의 제곱이 아니면, -1을 리턴하는 문제입니다! 정수 제곱근 판별 입력받은 n에 제곱근을 씌워줍니다. -> 이때 n의 제곱근의 값이 정수가 아니면 너무 큰 소수가 나올 수 도 있으므로 소수 둘째 자리에서 반올림을 했습니다 이 n이 정수이면, n의 제곱근 값에 1을 더하고 제곱을 하였고, 이 n이 소수이면, -1을 출력합니다. def solution(n): n = round(n**(0.5),1) if n == int(n): answer = (n+1)**2 else : answer = -1 return answer 그리고 파이써닉하게 한번 바꾸어 보았습니다! def solution(n): n = round.. 2020. 12. 3.
[프로그래머스] Lv.1 - 내적 (by python) 처음 내적은 numpy의 dot 기능을 통해 내적을 하려고 했지만, type의 형태가 int64이기 때문에 json으로 읽을 수 없다고 합니다..! 그래서 for문을 통해 하나씩 곱한 값을 리스트로 저장하고, 그 리스트의 값들을 다시 더하는 구조로 바꿨습니다! def solution(a, b): answer = 0 dot = [i*j for i,j in zip(a,b)] for a in dot : answer += a return answer 따로 리스트로 저장하지 않고, 곱하면서 더하면 더 짧아지게 되네용! def solution(a, b): answer = 0 for i,j in zip(a,b) : answer += i*j return answer 감사합니다 :) 2020. 12. 3.
[프로그래머스] Lv.1 행렬의 덧셈 이번 문제는 행렬의 덧셈입니다! 파이썬에서는 행렬을 pandas와 numpy를 사용해서 구현할 수 있습니다. 저는 이번에 numpy를 사용해서 구현해보았습니다! import numpy as np def solution(arr1, arr2): a1 = np.array(arr1) a2 = np.array(arr2) answer = (a1+a2).tolist() return answer numpy의 array를 통해 입력받은 리스트의 형태를 행렬 형태로 바꾸고, 덧셈 후 다시 리스트 형태로 바꾸도록 구성해보았습니다! 코딩 테스트 문제를 풀며 이번에 처음으로 모듈을 사용해보았습니다. 파이썬의 가장 큰 장점으로 생각이 되는 모듈을 많이 이용해야겠다고 느꼈습니다. 하나하나 코딩하는 노가다도 중요하지만..! 시험은 .. 2020. 12. 3.
[프로그래머스] Lv. 1 실력테스트 - 비밀지도_파이썬 import numpy as np def solution(n, arr1,arr2): answer = [] answer1, answer2 = [],[] for i_1,i_2 in zip(arr1,arr2): answer_1,answer_2 = '', '' for j in range(n-1,-1,-1): if i_1 - 2**j >= 0: i_1 = i_1 - 2**j answer_1+='#' else : answer_1+= ' ' if i_2 - 2**j >= 0: i_2 = i_2 - 2**j answer_2+='#' else : answer_2+= ' ' answer1.append(answer_1) answer2.append(answer_2) for shp1,shp2 in zip(answer1,answ.. 2020. 12. 2.
[프로그래머스] Lv.1 - 문자열 내 마음대로 정렬하기 def solution(strings, n): answer = [] alphas = [] for i in range(0,len(strings)): word_index = strings[i][n] # strings내에 있는 index = n에 해당하는 알파벳 alphas.append(word_index) # 모두 모으기 alphas = sorted(alphas) # 모은 알파벳들 오름차순으로 정렬 strings = sorted(strings) # strings 오름차순 정렬 for i in alphas : # 단어의 n번째 알파벳들 하나씩 뽑는다. for k in range(0,len(strings)): # strings를 돌면서 n번째 알파벳들이 있는 단어를 찾는다. if strings[k][n] == .. 2020. 11. 26.
[프로그래머스] Lv.1 - 문자열 다루기 기본_파이썬 이 문제를 풀때, 문제 설명에서의 조건을 빼놓고 작성하여 계속 테스트에서 오답이 나왔습니다. 빠뜨렸던 문제 조건은 "문자열 s의 길이가 4혹은 6" 이라는 조건을 빼고 실행했었습니다..ㅠ s의 길이가 1이상, 8이하라고해서.. 라고 변명을 해보지만, 코딩테스트 문제를 풀때도 마찬가지로 문제를 잘 읽어야한다고 느끼게 되었습니다. 이 문제는 문자열에서 숫자만 있는 문자열을 구분하는 함수 만들기입니다. 따라서 문자열에서 하나하나 탐색을 하며 해당 문자가 숫자인지 숫자가 아닌지만 판단을 해주면 되도록 했습니다. 따라서 try except를 통한 예외처리문을 사용하였고, 문자열의 요소를 for문을 통해 하나하나씩 탐색하도록 했습니다. answer을 기본값으로 True를 할당하였습니다. 해당 문자열의 요소가 flo.. 2020. 11. 26.
[프로그래머스] Lv.1 - 같은 숫자는 싫어_파이썬 효울성까지 체크하는 문제가 나왔습니다! 효율성이 시간 복잡도로 측정한다는 말을 얼핏 들은거 이외에는 효율성에 대해 잘 모르겠습니다..ㅠ.ㅠ 같은 숫자는 싫어는 숫자 listt arr에서 연속된 숫자를 제외하고 모든 숫자를 return 하는 문제입니다. 따라서 첫번째 고려사항은 중복된 숫자가 나오지 않게 막아줘야 했습니다. 이를 위해서 저는 if else문을 통해 조건문을 이용했습니다. if문으로 맨 마지막에 추가된(제일 최근에 추가된)숫자가 지금 추가되려는 숫자와 같다면 pass 그렇지 않다면(제일 최근에 추가된 숫자와 다르다면) 지금 숫자(i)를 추가하도록 했습니다. 하지만 제일 처음 실행했을때, return하는 answer의 리스트가 비어있었기 때문에 answer[-1]이 에러가 났습니다. 따라서 제.. 2020. 11. 26.
[프로그래머스] Lv.1 - 두 정수 사이의 합_파이썬 더보기 문제 설명 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 제한 조건 a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요. a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다. a와 b의 대소관계는 정해져있지 않습니다. a와 b의 대소관계는 정해져있지 않기때문에 디폴트 가정으로 a가 b보다 작거나 같다고 가정하였습니다. 그리고 a가 b보다 크게되면, a,b를 바꾸어서 for문으로 들어가게됩니다. 그러면 이제 작은 수(a)부터 큰 수(b)까지의 수를 하나씩 증가하며 answer에 더하게 됩니다. 이때, range의.. 2020. 11. 25.
[프로그래머스] Lv.1 - 문자열 내 p와 y의 개수_파이썬 더보기 문제 소개 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다. 예를 들어 s가 pPoooyY면 true를 return하고 Pyy라면 false를 return합니다. 제한사항 문자열 s의 길이 : 50 이하의 자연수 문자열 s는 알파벳으로만 이루어져 있습니다. 저는 문자열 s를 모두 대문자로 바꾸고 대문자로 바뀐 문자열s에서 count를 통해 대문자 P 와 Y의 개수를 세었습니다. 그리고 조건문을 통해 P의 개수와 Y의 개수가 같다면 answ.. 2020. 11. 25.
[프로그래머스] Lv1 - 3진법 뒤집기_파이썬 이 문제는 3진법 뒤집기이다. 처음 입력받은 n을 3진법으로 변환 후 3진법을 앞뒤 반전시키고 앞뒤가 반전된 3진법을 다시 10진법으로 표현하는 것이다. 따라서 총 3단계로 나누어서 계획을했다. n을 3진법으로 표현 3진법을 앞뒤 반전시키기 앞뒤 반전된 삼진법을 10진법으로 표현하기. 우선 3진법은 y = (0,1,2) * 3^0 + (0,1,2)* 3^1 + (0,1,2) * 3^3 + (0,1,2)* 3^4 + ···· 으로 계산할 수 있다. 따라서 입력받은 값 n = 45라면, 3^3 = 27 과 2* 3^2 =18 의 합으로 만들 수 있다. 이 원리를 가지고 n을 3진법으로 표현 def solution(n): answer = [] for i in range(30, -1 , -1): # 나눌 수 있.. 2020. 11. 24.
[프로그래머스] Lv1 - 두 개 뽑아서 더하기_파이썬 https://programmers.co.kr/learn/courses/30/lessons/68644 def solution(numbers): answer = [] if len(numbers) >= 2 and len(numbers) = 0 and ii 2020. 11. 2.
[프로그래머스] Lv1 - K번째 수_파이썬 https://programmers.co.kr/learn/courses/30/lessons/42748 def solution(array, commands): answer = [] n = len(commands) #command가 몇 개 일지 모르기 때문에 모든 command 포함하기 위하여 개수 파악 for nn in range(0,n): #첫 번째 command부터 n번째(맨 끝 커맨드)까지 차례대로 진행 i = commands[nn][0]-1 #list의 index 는 0부터 시작하기때문에 -1을 더해줌 j = commands[nn][1] sol = array[i:j] # i번째 부터 j번째 까지 array 자르기 sol = sorted(sol) # 자른 array를 오름차순으로 정렬 soll = s.. 2020. 11. 1.