본문 바로가기

202127

[백준] 10867 - 중복 빼고 정렬하기_python 1. 문제 N개의 정수가 주어진다. 이때, N개의 정수를 오름차순으로 정렬하는 프로그램을 작성하시오. 같은 정수는 한 번만 출력한다. 2. 입력 첫째 줄에 수의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 3. 출력 첫째 줄에 수를 오름차순으로 정렬한 결과를 출력한다. 이때, 같은 수는 한 번만 출력한다. 얼핏 보면 쉬운 문제이지만 많은 시행착오가 있었습니다..! 🤦‍♂️ N = int(input()) nums = input().split() nums = sorted([int(i) for i in nums ]) num = [] for i in range(0, len(nums)): if nums[i] not in n.. 2020. 12. 10.
[프로그래머스] Lv.1 - 직사각형 별찍기 _파이썬 직사각형 별찍기 직사각형 별찍기 이 문제에는 두 개의 정수를 input을 통해 입력받습니다. 입력받은 두 개의 숫자를 띄어쓰기 간격을 통해 a와 b로 map을 통해 선언합니다. 이때 a, b에 있는 정수만큼 가로 a 개 , 세로 b개 => axb Matrix모양의 별을 만들어야 합니다. - 저는 1행부터 b행까지 한 행씩 출력하기로 생각했습니다. - stars에 a만큼의 별 모양을 지정하기 위해 문자'*'에 a를 곱해서 a만큼의 '*'을 선언했습니다. - 그리고 for문을 통해 b번 반복해서 b행까지 출력을 해서 완성했습니다! a, b = map(int, input().strip().split(' ')) stars = '*'*a for i in range(b): print(stars) [input] 6 .. 2020. 12. 5.
[프로그래머스]Lv.1 - 제일 작은 수 제거하기_파이썬 제일 작은 수 제거하기 정수를 저장한 배열, arr에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해야 한다. step 1. arr의 element가 1이라면, -1을 return 한다 step 2. 제일 작은 수를 찾는다. step 3. 제일 작은 수를 arr에서 뺀다. (이때, arr의 빼는 element를 제외한 나머지 index 변하면 안 된다) 제일 작은 수를 찾기 위해서 정렬 후 맨 앞에 있는 값(제일 작은 값)을 arr_min에 저장하고 arr에서 그 element를 찾아서 빼도록 했습니다! def solution(arr): answer = [] if len(arr) == 1: answer.append(-1) else: arr_min = sorted(arr).pop(.. 2020. 12. 4.
[프로그래머스] 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.