본문 바로가기

코딩테스트/Python

(225)
[코드업] 파이썬 기초 100제 1~10 1. print("Hello") 2 print("Hello World") 3. print("Hello") print("World") 4. print("'Hello'") 5. print("\"Hello World\"") 6. print("\"!@#$%^&*()'") 7. print("\"C:\\Download\\'hello'.py\"") 8. print("print(\"Hello\\nWorld\")") 9. a = input() print(a) 10. a = int(input()) print(a)
[프로그래머스] 로또의 최고 순위와 최저 순위 내 코드 def solution(lottos, win_nums): answer = [] dic = {6:1,5:2,4:3,3:4,2:5,1:6,0:6} cnt=0 for num in win_nums: if num in lottos: cnt+=1 cnt0 = lottos.count(0) if cnt+cnt0 > 6: answer.append(1) else: answer.append(dic[cnt+cnt0]) answer.append(dic[cnt]) return answer 먼저 lottos 리스트와 win_nums가 일치하는 횟수를 세어준다. 여기서 0의 갯수를 더하면 최고순위, 더하지 않으면 최저 순위이다. ( 0이 로또번호일때가 최고순위, 아닐때가 최저순위이기때문임) 1. 일치하는 횟수를 for문을 ..
[프로그래머스] 신규 아이디 추천 내 코드 def solution(new_id): answer = '' new_id = new_id.lower() # 1단계 - 소문자 치환 for i in new_id: # 2단계 - 특정 문자 제거 if i!='.' and i!='-' and i!='_' and ('a'>i or 'z'i or '9' 0 and answer[-1] == '.': # 4단계 - .이 처음이나 끝에 위치하면 제거 answer = answer[:-1] if len(answer) > 0 and answer[0]=='.': answer = answer[1:] if len(answer) ==0: # 5단계 - 빈 문자열이면 a 대입 answer+='a' elif len(answer) >= 16: # 6단계 - 길이가 15이상이면 ..
[프로그래머스] 약수의 개수와 덧셈 내 코드 def isPrime(num): a = [] for i in range(1,num+1): if num%i==0: a.append(i) return a def solution(left, right): answer = 0 for i in range(left,right+1): if len(isPrime(i))!=0: answer+= i if len(isPrime(i))%2==0 else -i return answer isPrime은 약수의 list를 return해주는 함수이다. left와 right를 for문으로 돌려 약수 list가 비어있지 않을때 길이가 짝수면 더해주고 홀수면 빼주었다. 다른사람 코드 def solution(left, right): answer = 0 for i in range(l..
[프로그래머스] 소수 만들기 내 코드 def isPrime(a,b,c): d = a+b+c cnt=0 for i in range(2,d): if d%i==0: cnt+=1 return 1 if cnt==0 else 0 def solution(nums): answer = 0 for i in range(len(nums)): for j in range(i+1,len(nums)): for k in range(j+1,len(nums)): answer += isPrime(nums[i],nums[j],nums[k]) return answer nums안에서 3개를 뽑아서 소수인지 판별해야한다. nums에서 숫자 3개를 뽑는것은 삼중포문을 사용하였다. 여기서 숫자 3개를 선택한후 isPrime함수로 넘겨주면 소수인지 아닌지 판별하여 소수이면 1을 ..
[프로그래머스] 숫자 문자열과 영단어 카카오문제!! 네오랑 프로도가 나온다 ㅎㅎ 문자열안의 영어를 숫자로 바꾸는 것이다. 내 코드 def solution(s): dic = {"zero":0,"one":1,"two":2,"three":3,"four":4,"five":5,"six":6,"seven":7,"eight":8,"nine":9} for i in dic: s = s.replace(i,str(dic[i])) return int(s) 0~9까지의 영어표기를 숫자로 바꿔줘야한다. 나는 딕셔너리를 만들고 이걸 반복하면서 replace를 사용하여 바꿔주었다. 다른사람 코드 num_dic = {"zero":"0", "one":"1", "two":"2", "three":"3", "four":"4", "five":"5", "six":"6", "seve..
[프로그래머스] 문자열 내 마음대로 정렬하기 내 코드 def solution(strings, n): strings = [i[n]+i for i in strings] strings.sort() return [i[1:] for i in strings] ["sun", "bed", "car"] n=1 이라면, ["usun", "ebed", "acar"] 이런식으로 n번째 문자를 문자 제일 앞에 붙혀주었다. 그리고 sort를 하고 i[1:]를 사용하여 가장 첫번째 문자를 빼고 출력해주었다. 다른사람 코드 def solution(strings, n): return sorted(strings, key = lambda x : (x[n],x)) sorted안에 저렇게 정할 수 있다는 것을 몰랐다!! sort나 sorted안에 key를 사용할 경우 key값에 정렬을..
[프로그래머스] 두개 뽑아서 더하기 내 코드 def solution(numbers): a = set() for i in range(len(numbers)): for j in range(i+1,len(numbers)): a.add(numbers[i]+numbers[j]) return sorted(a) 리스트에서 두개를 뽑아 더해서 만들 수 있는 모든 수를 오른차순으로 정렬하는 문제이다. 중복을 제거해야하기 때문에 set을 사용하였다. 쉬운 문제다! ㅎㅎㅎ 다른사람 코드 def solution(numbers): answer = [] for i in range(len(numbers)): for j in range(i+1, len(numbers)): answer.append(numbers[i] + numbers[j]) return sorted(l..