파이썬 Python/프로그래머스 (27) 썸네일형 리스트형 [프로그래머스] 나머지가 1이 되는 수 찾기 프로그래머스 '나머지가 1이 되는 수 찾기' 풀이 문제 ) 자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다. 3 ≤ n ≤ 1,000,000 나의 풀이 ) 아래 더보기란에 추가 설명 더보기 1. 조건에서 n은 3 이상이므로 for문을 2부터 n까지 순회해줍니다. 2. n을 i로 나누었을 때 나머지가 1인 가장 작은 i를 구하라고 했으므로, 나머지가 1이 나오자마자 break로 for문을 탈출해줍니다. 3. i를 넣은 answer를 리턴해줍니다. 수정할 부분이 발견되거나 궁금한 점이 있으면 댓글 남겨주세요. 성장을 위한 댓글은 환영입니다 :) [프로그래머스] 문자열 다루기 기본 프로그래머스 '문자열 다루기 기본' 풀이 문제 ) 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다. s는 길이 1 이상, 길이 8 이하인 문자열입니다. 나의 풀이 ) 아래 더보기란에 추가 설명 더보기 1. 입력받은 문자열의 길이가 4 이거나 6 이어야 하므로, if문 조건에 적어줍니다. 2. 또한 입력받은 문자열이 모두 숫자이어야 하므로, isdigit() 함수를 이용한 값이 True인 조건도 적어줍니다. 3. 문자열의 길이 len(s)가 4이거나 6이고, isdigit() 값이 True 이면 answer를 바로 리턴해줍니다. 아니라면 answer에 .. [프로그래머스] 최대공약수와 최소공배수 프로그래머스 '최대공약수와 최소공배수' 풀이 문제 ) 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다. 두 수는 1이상 1000000이하의 자연수입니다. 나의 풀이 ) 아래 더보기란에 추가 설명 더보기 1. n 보다 m이 항상 크다는 조건이 문제에 제시되어 있지 않으므로, 계산의 편리를 위해 if문을 이용해 n이 m보다 클 경우 두 수의 자리를 바꿔줍니다. 2. 최대공약수는 1부터 n까지 숫자 중에 있으므로, for문 범위를 1부터 n+1까지로 해줍.. [프로그래머스] 최소직사각형 프로그래머스 '최소직사각형' 풀이 문제 ) 모든 명함의 가로 길이와 세로 길이를 나타내는 2차원 배열 sizes가 매개변수로 주어집니다. 모든 명함을 수납할 수 있는 가장 작은 지갑을 만들 때, 지갑의 크기를 return 하도록 solution 함수를 완성해주세요. 나의 풀이 ) 아래 더보기란에 추가 설명 더보기 1. 지갑에 명함의 가로 세로 길이를 바꾸어서 넣을 수 있다 하였으므로, 우리는 명함의 가로 세로 길이 중 더 큰 값을 가로로, 더 작은 값을 세로로 각각 돌려주고 생각해줍시다. 작은 값들 중 큰 수와 큰 값들 중 큰 수를 곱하면 최소직사각형이 됩니다. 2. long과 short 리스트를 만들어 for문을 순회하며 가로 세로 중 더 큰 값을 long에, 더 작은 값은 short에 넣어줍니다. 3.. [프로그래머스] 소수 찾기 프로그래머스 '소수 찾기' 풀이 문제 ) 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 나의 풀이 ) 아래 더보기란에 추가 설명 더보기 1. 저는 먼저 소수인지 판별하기 위한 함수를 따로 만들어주었습니다. 2부터 자기 자신의 제곱근까지 for문을 통해 순회하며, number가 i로 나누어 떨어지면 1과 자기 자신 말고 약수가 또 있다는 것이니 소수가 아니므로 False를 리턴해줍니다. 나누어 떨어지는 i가 없다면 True를 리턴해줍니다. (여기서 자기 자신의 -1 한 값까지 순회하지 않는 이유는 약수는 짝을 지어 존재하기 때문에, 굳이 자기 자신까지 확인해주지 않아도 판별이 가능하여 생략하였습니다.) 2. 1번에서 만들어둔 isprime() 함수를 .. [프로그래머스] 행렬의 덧셈 프로그래머스 '행렬의 덧셈' 풀이 문제 ) 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요. 나의 풀이 ) 아래 더보기란에 추가 설명 더보기 1. arr1과 arr2와 똑같은 크기의 answer를 만들어 줍니다. 2. 중첩 for문을 이용하여 각각의 리스트 인덱스에 맞춰 arr1과 arr2의 합을 구해 answer 리스트의 해당 인덱스 값에 넣어줍니다. 첫 번째 풀이보다 좀 더 간단하게 풀 수 있는 numpy를 이용한 풀이도 함께 첨부합니다! 아래 더보기란에 추가 설명 더보기 1. 우선 import를 이용해 numpy를 np로 별명을 지어 불.. [프로그래머스] 정수 내림차순으로 배치하기 프로그래머스 '정수 내림차순으로 배치하기' 풀이 문제 ) 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 나의 풀이 ) 아래 더보기란에 추가 설명 더보기 1. 입력 받은 n을 문자열로 바꾸어 이를 내림차순으로 정렬해줍니다. 이때 sorted() 함수는 자동으로 리스트에 담아주기 때문에 list()를 해주지 않아도 괜찮습니다. *** 여기서 int()를 하지 않으면 런타임 에러가 뜹니다. *** (저도 한참 고민해보다 도저히 모르겠어서 다른 사람들 풀이를 보니 테스트 케이스에 문자열 n이라도 들어간 건지 int()를 해줘야 한다는군요 ㅠㅠ) 2. join() 함.. [프로그래머스] 가운데 글자 가져오기 프로그래머스 '가운데 글자 가져오기' 풀이 문제 ) 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 나의 풀이 ) 아래 더보기란에 추가 설명 더보기 1. if문을 통해 입력 받은 문자열 s의 길이가 짝수일 때와 홀수일 때로 나눕니다. 2. 짝수일 때는 len(s)/2 - 1 과 그 다음 인덱스를 함께 출력하고, 홀수일 때는 (len(s)+1)/2 - 1 인덱스를 출력해줍니다. (인덱스는 int 형이어야 하므로 int로 형변환해줍니다.) 수정할 부분이 발견되거나 궁금한 점이 있으면 댓글 남겨주세요. 성장을 위한 댓글은 환영입니다 :) 이전 1 2 3 4 다음