프로그래머스 | 종이 자르기 [파이썬 python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 def solution(M, N): answer = (M * N) - 1 return answer 간단한 문제처럼 보이지만 규칙을 찾아야 한다. 직접 그림을 그려 규칙을 찾아보았다. 가로를 M, 세로를 N이라 할 때, 가로 M을 먼저 자른다고 해보자. 그럼 가로는 M-1번 자르면 모든 가로 길이가 1이 된다. 그 결과, 가로가 1, 세로가 N인 직사각형이 M개 생긴다. 그럼 이제 이 직사각형들의 세로 길이를 1로 만들어줄 차례이다. 세로를 N-1번 자르면 모든 세로 길이가 1이 된다. N-1번 자를 직사..
프로그래머스 | 문자열 밀기 [파이썬 python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 처음 시도한 코드 def solution(A, B): Alist = list(A) idx = B.index(A[0]) for i in range(len(Alist)): if i+idx >= len(A): Alist[(i+idx) % len(Alist)] = A[i] else: Alist[i+idx] = A[i] if Alist == list(B): return idx else: return -1 먼저, 주어진 테스트 케이스들을 보며 규칙을 찾아내었다. B에서 A의 첫 번째 문자열이 위치한 인덱스를 찾으면 그 ..
프로그래머스 | 옹알이 (1) [파이썬 python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 from itertools import permutations def solution(babbling): answer = 0 perm = [] # 가능한 모든 말 for i in range(4): perm.append(list(permutations(["aya", "ye", "woo", "ma"], i+1))) for i in range(len(perm)): # 튜플로 구성된 순열을 하나의 문자열로 바꿈 for j in range(len(perm[i])): perm[i][j] = ''.join(list(..
프로그래머스 | 등수 매기기 [파이썬 python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 def solution(score): avg = [sum(i)/2 for i in score] # 평균 s_avg = sorted(avg, reverse=True) # 평균을 큰 값부터 내림차순 정렬 answer =[] # 등수 for i in avg: answer.append(s_avg.index(i)+1) # index는 맨 앞에 위치한 요소의 인덱스 번호를 리턴 return answer score = [[80, 70], [70, 80], [30, 50], [90, 100], [100, 90], [1..
프로그래머스 | 특이한 정렬 [파이썬 python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 def solution(numlist, n): answer =[] # n과의 거리를 저장할 리스트 for i in numlist: answer.append(i - n) result = [] # 정렬한 배열 # 거리가 n에 가까운 순으로 정렬, 절댓값이 같으면 양수(= 큰 값) 먼저 for i in sorted(answer[:], key=lambda x:[abs(x), -x]): result.append(numlist[answer.index(i)]) return result [1, 2, 3, 4, 5, 6..
프로그래머스 | 유한소수 판별하기 [파이썬 python]
·
Algorithm/프로그래머스
코딩테스트 연습 - 유한소수 판별하기 소수점 아래 숫자가 계속되지 않고 유한개인 소수를 유한소수라고 합니다. 분수를 소수로 고칠 때 유한소수로 나타낼 수 있는 분수인지 판별하려고 합니다. 유한소수가 되기 위한 분수의 조건 school.programmers.co.kr 코드 import math def solution(a, b): gcd = math.gcd(a, b) # 분모, 분자의 최대공약수를 구해 b를 최대공약수로 나눔 b //= gcd num = [] # 소인수 저장 i = 2 while i