[프로그래머스] Lv1. 약수의 개수와 덧셈 (파이썬) 제곱수인지 판별하는걸 그냥 단순하게 if int(i**(0.5))==i**(0.5):로 비교해봤는데 다른사람들도 다 이렇게 했더라. 그 외에는 괜찮았던 문제. def solution(left, right): answer = 0 for i in range(left, right+1): if int(i**(0.5))==i**(0.5): #제곱수인지 판별 answer-=i else: answer+=i return answer 프로그래머스 풀이 2022.02.12
[프로그래머스] Lv1. 실패율 (파이썬) 이중 for문을 이용해서 현재 스테이지별 유저의 스테이지를 탐색해줬다. 정렬은 값이 0~1이니 -1로 바꿔가면서 최대값을 찾았다. 처음엔 스테이지에 도달했지만 클리어하지 못한 유저들과 스테이지에 도달한 유저들 모두 이중 for문 안에서 구하니 시간초과가 3개 나왔다... 그래서 len(stages)를 이용, 실패한 유저씩 빼주면 되더라. def solution(N, stages): a= [] b=[] k= len(stages) for i in range(N): c=0 #실패한 유저수 스테이지마다 초기화 for j in range(len(stages)): #계속 변하는 k로 두지않게 주의 if stages[j]==i+1: #스테이지에 도달했지만 클리어하지 못한 유저들 c+=1 if c!=0: a.appen.. 프로그래머스 풀이 2022.02.12
[프로그래머스] Lv1. 3진법 뒤집기 3진법을 어떻게 만드나 띠용 했던 문제. 근본적으로 3진법 만드는 방식을 역이용했다. def solution(n): answer = 0 a=[] while n>0: # 0보다 클때 계속 3으로 나눈 나머지로 뒤집힌 3진수값을 구해줌 a.append(n%3) n=n//3 l =len(a) while l>0: #배열 길이를 자릿수로 이용 0이 될때까지 answer+=3**(l-1)*a[-l] #값에 3^자릿수 곱하 l-=1 return answer 프로그래머스 풀이 2022.02.11
프로그래머스 폰켄몬(파이썬) 최대한 다양하게 고르라는 것을 보고 바로 list(set())이 떠올랐다. def solution(nums): answer = 0 a=list(set(nums)) # set로 중복값 제거 if len(a)>len(nums)//2: #하지만 a의 개수가 고를수 있는 n/2마리보다 클 경우 answer = len(nums)//2 #n/2개만 선택 else: answer=len(a) #아니면 전부 선택 return answer 프로그래머스 풀이 2022.02.11
프로그래머스 내적(파이썬) for문 쓰는 기초문제 def solution(a, b): answer = 0 for i in range(len(a)): answer+=a[i]*b[i] #내적값 return answer 프로그래머스 풀이 2022.02.11
프로그래머스 음양더하기 true이면 더하고 false이면 빼준다 def solution(absolutes, signs): answer = 0 i=0 while True: if signs[i]: #트루일 경우 answer+=absolutes[i] else: #false answer-=absolutes[i] i+=1 if i==len(signs): #한 바퀴 다 돌면 반복문 탈출 break return answer 프로그래머스 풀이 2022.02.11
프로그래머스 없는 숫자 더하기 0~9까지 해당 숫자가 배열에 없으면 더해주는 쉬운문제. def solution(numbers): answer = 0 for i in range(10): #0에서 9까지 if i not in numbers: answer+=i #없으면 더해줌 return answer 프로그래머스 풀이 2022.02.11
프로그래머스 키패드 누르기(파이썬) 좌표로 번호판을 생각한다는게 어려웠다. 무엇보다 꼼꼼히 구현을 해야하는 문제 def solution(numbers, hand): answer = '' dic = {1: [0,0], 2:[0,1], 3:[0,2], 4:[1,0], 5:[1,1], 6:[1,2],7:[2,0],8:[2,1],9:[2,2],\ '*':[3,0],0:[3,1],'#':[3,2]} #좌표별로 나누기 left_n = dic['*'] #왼손 시작 right_n = dic['#'] #오른손 시작 for i in numbers: now = dic[i] #가고자 하는 위치 if i ==1 or i==4 or i == 7: answer+='L' left_n =now #무조건 왼손 elif i ==3 or i == 6 or i == 9: an.. 프로그래머스 풀이 2022.02.10
프로그래머스 신규아이디 추천(파이썬) 카카오 2021 블라인드 문제로 나왔었다. 그냥 시키는 대로 구현하면 되는 쉬운 문제지만 꼼꼼하게 하지 않으면 인덱스 오류같은 오류가 난다. 자세한건 주석으로 설명했다. def solution(new_id): answer = '' new_id=new_id.lower() #소문자로 # print(new_id) for i in range(len(new_id)): #특정문자 외 제거 if new_id[i].isalpha() or new_id[i].isdigit() or new_id[i] in ["-", "_", "."]: answer+=new_id[i] # print(answer) while ".." in answer: # .. 를 .로 answer = answer.replace("..",".") if ans.. 프로그래머스 풀이 2022.02.10
프로그래머스 소수찾기(파이썬) 에라토스테네스의 체를 이용하는 문제. 모든 수를 소수라 하고 소수를 1로 a배열에 저장해두고 소수의 배수들은 모두 소수가 아니다라는 개념을 이용한 dp. 소수를 1로 둬서 소수의 개수를 찾기도 쉽다. def solution(n): answer = 0 a=[1]*(n+1) # 소수면 1 a[0]=0 a[1]=0 for i in range(2,n+1): if a[i]==0: continue for j in range(2,n//i+1): a[i*j]=0 answer = sum(a) #소수 개수의 총합 return answer 프로그래머스 풀이 2022.02.10