[프로그래머스]

huga·2020년 9월 19일
0

코딩테스트

목록 보기
3/8

모의고사

def solution(answers): 
    answer = [] 
    temp = [] 
    supo1 = 0 
    supo2 = 0 
    supo3 = 0 
    one = [1,2,3,4,5] 
    two = [2,1,2,3,2,4,2,5] 
    three = [3,3,1,1,2,2,4,4,5,5] 

    for i in range(len(answers)): #문제의 갯수만큼 루프
        if answers[i] == one[i%len(one)]: #5%5=0,6%5=1이니까 순서가 반복됨
            supo1+=1 
        if answers[i] == two[i%len(two)]: 
            supo2+=1 
        if answers[i] == three[i%len(three)]: 
            supo3+=1 
    
    temp = [supo1, supo2, supo3] #각각 사람이 맞춘 갯수 리스트
    for person, score in enumerate(temp): 
        if score == max(temp): #가장 높은 점수와 같으면 
            answer.append(person+1) #인덱스가 0이면 1번째 사람이니까 더하기
    return answer

 #enumerate: 순서가 있는 자료형(list, set, tuple, dictionary, string)을 입력받아 
 # 인덱스 값을 포함하는 enumerate 객체 리턴 코드를 입력하세요

모의고사

from itertools import permutations
def solution(numbers):
    answer = 0
    strList = list(numbers) #일단 1의 자리수로 들어감
    #print("=======")
    for i in range(2,len(numbers)+1): #길이 2부터 하기 위해 
        #numbers로 만들 수 있는 i길이인 순열을 리턴해줌
        permu = list(permutations(numbers,i)) 
        #print(str(permu))
        for j in permu:
            if len(j) <=len(numbers):
                strList.append(''.join(j)) #리스트를 스트링으로''.join
    
    strList=list(set([int(n) for n in strList])) #중복제거

    #1과 0은 소수가 아니다
    if strList.count(1):
        strList.remove(1)
    if strList.count(0):
        strList.remove(0)

    #소수판별: X를 2부터 x의 제곱근까지의 숫자만 나누어 떨어지는지 확인
    #나누어 떨어지면 소수가 아님
    for num in strList:
        i = 2
        while i*i <=num:
            if num % i == 0:
                answer -=1
                break
            i+=1
        answer +=1

    return answer

카펫

def solution(brown, yellow):

    answer = []
    #brown+yellow = 가로*세로
    total = brown + yellow
    temp = []
    for i in range(3,int(total/3)+1): 
    #3이상의 수면서 곱해서 전체갯수되는 리스트 만들기
        if total % i == 0:
            temp.append(i)
    print(temp)
    
    #temp리스트를 양 끝에서부터 하나씩 좁혀서 경우가 맞을 경우 해당 요소가 가로세로
    for i in range(len(temp)): #i는 temp의 맨 첫번째 부터 시작
        j = len(temp)-1-i  #j는 맨 뒷번째로 시작
        #가로세로가 곱하면 total(전체개수)면서 
        #노랑색은 해당 조건이어야함(case3이 통과가 안됨)
        if temp[i]*temp[j]==total and (temp[i]-2)*(temp[j]-2)==yellow:
            answer.append(temp[j])
            answer.append(temp[i])
            break
        j-=1
    
    return answer

brown 24 yellow 24 경우 print(temp) 실행시

0개의 댓글