본문 바로가기

Algorithm/프로그래머스(Programmers)50

[ 파이썬(python) ] 프로그래머스 level1 - 두 정수 사이의 합 📌 두 정수 사이의 합 💡 나의 풀이 문제를 보고 3가지 경우의 수를 판단했다. a == b a b sum(range())를 사용하면 간편하게 줄일 수 있었는데, 무심코 반복문을 사용해서 효율성을 극대화시키지 못할 뻔했다. a가 b보다 크면, swap처리를 해준다. 이후, sum(range())를 사용하여 값을 계산해준다. a와 b가 같으면, 0아니야? 라고 할 수도 있지만 마지막 값은 +1을 해줬기 때문에 입력값 그대로 리턴되는것을 알 수 있다. def solution(a, b): if a > b: a, b = b, a return sum(range(a, b+1))) 2021. 3. 31.
[ 파이썬(python) ] 프로그래머스 level1 - 소수판별 📌 소수 판별 기존에 나동빈 - 이코테 책에서 봤던 유형이었는데, 소수문제에는 2가지 유형이 있다. 입력값이 단순히 소수인지 판별할 때 입력 구간에서 소수값 출력 이 문제는 2번 유형에 가까운 문제였다. 1부터 n까지의 소수의 개수를 구하는 문제기 때문이다. 정답을 제출하고 다른사람의 코드를 보는데 신기한 코드가 있었다. set을 활용해서 반복문을 돌때마다 i의 배수만큼 빼주는 코드가 있었다. 코드도 파이써닉했는데, 한눈에 이해가 되고 깔끔했다. 앞으로 이렇게 코드를 작성하도록 노력해야겠다. 💡 나의 풀이 에라토스테네스의 체를 이용해 풀었다. 여기서 반복문의 범위를 2부터 제곱근까지 선언한 이유는 약수의 특징을 이용했는데, 예를 들어 10은 가운데 약수를 기준으로 대칭적으로 2개씩 앞뒤로 묶어서 곱하면 .. 2021. 3. 31.
[ 파이썬(python) ] 프로그래머스 level1 - 문자열 다루기 기본 📌 문자열 다루기 기본 문제 설명에서 나온 조건은 무조건 사용하자. 💡 나의 풀이 숫자로만 구성되어있는지 확인하면 되는 문제라서 문자열만 들어있는 변수를 따로 만들고, 만약 input에 문자열이 포함되어있으면 return False를 하는 방법으로 만들었다. 한 가지 헷갈린 점이 있었다. 문제 설명에 s의 길이가 4 혹은 6이라고 주어졌는데 제한 사항에도 s는 길이 1이상, 길이 8이하인 문자열이라고 적혀있었다. 처음에는 문제가 잘못 나온 줄 알았는데, 생각해보니까 입력은 1~8까지 주어지는데 출력해야하는 문자열의 길이는 4 혹은 6 이라는 얘기였다. 즉, 문자열이 4와 6일때만 함수를 실행하면 된다. 그래서 나는 len(s) != 4 and len(s) != 6:으로 풀었는데 해석하자면 s의 길이가 모.. 2021. 3. 31.
[ 파이썬(python) ] 프로그래머스 level1 - 완주하지 못한 선수 📌 완주하지 못한 선수 count를 이용해서 풀려고 했지만, 정확도가 100% 나오지 않아 완벽하게 풀지 못했다. 4가지 풀이 방법이 있다. Counter Hash range(len()) zip() 첫번째로 Counter 모듈을 선언해서 풀 수 있는데, Counter끼리는 더하거나 뺄 수 있다. 이번문제를 풀면서 처음 보는데 되게 유용한것 같다. 단 1줄로 답을 제출 할 수 있다 (WOW) # Counter from collections import Counter def solution(participant, completion): return str(*(Counter(participant) - Counter(completion))) 두번째는 Hash값을 이용하는건데, 제한사항에 completion의 길.. 2021. 3. 31.
[ 파이썬(python) ] 프로그래머스 level1 - 문자열 내 p와 y의 개수 📌 문자열 내 p와 y의 개수 lower(), count() 함수를 써야한다고 인지했는데, 습관적으로 for문에 적용했다. 하나의 문자열로 주어졌기때문에 for문을 사용하지 않아도 적용이 가능하다. 💡 나의 풀이 # my_answer def solution(s): s = s.lower() p, y = 0, 0 for i in s: p += i.count('p') y += i.count('y') if p == y: return True return False # other_answer def solution(s): return s.lower().count('p') == s.lower().count('y') 2021. 3. 31.