본문 바로가기

파이썬

(70)
[ 프로그래머스 ] 모의고사 / 제출 1 / def solution(answers): result = [] n = len(answers) first = [1,2,3,4,5] second = [2,1,2,3,2,4,2,5] third = [3,3,1,1,2,2,4,4,5,5] students = [first, second, third] for student in students: score = 0 # answer이 학생찍는 기본배열보다 작을 때 if n < len(student): for a, s in zip(answers, student[:n]): if a == s: score += 1 # 학생 찍는 기본 배열보다 answer이 많을 때 else: # 기본 배열 늘려주기 student = student*(n//len(student)..
[ 프로그래머스 ] 소수 만들기 / 제출 1 / from itertools import combinations def isPrimeNum(x): for i in range(2,x): if x % i == 0: return False return True def solution(nums): answer = 0 # 3개 골라서 for candidate in list(combinations(nums,3)): if isPrimeNum(sum(candidate)): answer += 1 return answer 채점 결과 정확성: 100.0 합계: 100.0 / 100.0 순간 소수 판별이 기억이 안 나서 흠칫 했습니다. 다행히 금방 떠올렸고. 혹시나 헷갈릴까봐 따로 함수로 빼서 구현했습니다. combinations도 이름이 기억이 안 나서 p..
[ 프로그래머스 ] 음양 더하기 / 제출 1 / def solution(absolutes, signs): answer = 0 for i in range(len(absolutes)): if signs[i]: answer += absolutes[i] else: answer -= absolutes[i] return answer 채점 결과 정확성: 100.0 합계: 100.0 / 100.0 경우의 수 나눠 분기문으로 해결했습니다. / 다른 분들 풀이 / def solution(absolutes, signs): answer=0 for absolute,sign in zip(absolutes,signs): if sign: answer+=absolute else: answer-=absolute return answer for문에 zip() 사용하는 ..
[ 프로그래머스 ] 크레인 인형뽑기 게임 / 제출 1 / def solution(board, moves): answer = 0 n = len(board) last = [100] for move in list(map(lambda x:x-1,moves)): # 세로줄 끝까지 체크 for i in range(n): # 0 나오면 if board[i][move] != 0: #넣기 전에 체크 if last[-1] == board[i][move]: last = last[:-1] board[i][move] = 0 answer += 2 else: last.append(board[i][move]) board[i][move] = 0 break return answer 채점 결과 정확성: 100.0 합계: 100.0 / 100.0 소요시간 40분 40분 중 15분..
[ 프로그래머스 ] 숫자 문자열과 영단어 / 제출 1 / 어우 큰일입니다. 아직도 lv1에서 틀리다니... def solution(s): answer = '' num = '' num_dict = {'one':1, 'two':2, 'three':3, 'four':4, 'five':5,'six':6, 'seven':7, 'eight':8,'nine':9} for ch in s: if ch.isdigit(): answer += ch else: num += ch if num in num_dict: answer += str(num_dict[num]) num= '' return int(answer) 채점 결과 정확성: 70.0 합계: 70.0 / 100.0 7, 8, 9에서 실패했습니다. 그리고 더 문제인건 끙끙대다가 테케 맞으면 신나서 제출하는 습관을 ..
[ 프로그래머스 ] 로또의 최고 순위와 최저 순위 / 제출 1 / def score(num): if num == 6: return 1 elif num == 5: return 2 elif num == 4: return 3 elif num == 3: return 4 elif num == 2: return 5 else: return 6 def solution(lottos, win_nums): lotto_cnt = 0 # 1. lottos에서 win_nums에 속해있는 것을 골라낸다. for lotto_num in lottos: if lotto_num in win_nums: lotto_cnt += 1 # 2. lottos에서 0의 개수를 찾는다. zero_cnt = lottos.count(0) # 3. 최고순위 찾는 경우: 0의 개수만큼 더하기 best = l..
[ 프로그래머스 ] 내적 def solution(a, b): answer = 0 for i in range(len(a)): answer += a[i]*b[i] return answer 채점 결과 정확성: 100.0 합계: 100.0 / 100.0 아하 ..! 이 시리즈가 난이도가 낮은 시리즈였네요. 간단한 연산 문제가 주로 이루네요. 스트레스 받은 마음을 달래줘서 기분이 좋아졌다는데 만족하며 게시글 작성합니다. ..😊 그래도 다른 사람들 풀이 확인하고 가기. def solution(a, b): return sum([x*y for x, y in zip(a,b)]) 왕.. 깔끔합니다. zip()함수를 잘 안 사용하게 되는데 잘 몰라서 확신이 없어서 그런 것 같습니다. 문제 풀이도 빨리 끝난 김에 다시 리마인드하고 갑시다. 이 분 설..
[ 프로그래머스 ] 없는 숫자 더하기 / 제출 1 / def solution(numbers): answer = -1 nums = [i for i in range(10)] print(nums) for num in nums: if num not in numbers: if answer != -1: answer += num else: answer = num return answer 채점 결과 정확성: 100.0 합계: 100.0 / 100.0 0 - 9 리스트를 만들어주고 각 값이 주어진 numbers에 없다면( 각 값을 numbers가 포함하고 있지 않다면) answer에 더해줍니다. 대신 초기값이 -1이므로 분기문을 나눠 초기값은 대입하게 했습니다. / 다른 분들 풀이 / def solution(numbers): return 45 - sum(n..
[ 프로그래머스 ] 신규 아이디 추천 def solution(new_id): answer = '' #1 new_id = new_id.lower() #2 for id_char in new_id: if id_char.islower() or id_char.isdigit() or id in ['-','_','.']: answer += id_char #3 while '..' in answer: answer = answer.replace('..','.') #4 if len(answer) > 1 and answer[0] == '.': answer = answer[1:] if answer[-1] == '.': answer = answer[:-1] #5 if answer == '': answer = 'a' #6 if len(answer) >= 16: ans..
[ 프로그래머스 ] 신고 결과 받기 / 제출 1 / def solution(id_list, report, k): answer = [] result = {i:0 for i in id_list} reported = {} for i in range(len(report)): a, b = report[i].split() if b in reported and a not in reported[b]: reported[b].append(a) else: reported[b] = [a] for reported_user in reported: if len(reported[reported_user]) >= k: for i in range(len(reported[reported_user])): user = reported[reported_user][i] resul..