본문 바로가기

Algorithm272

[ 자바스크립트(JS), 파이썬(python) ] 프로그래머스 level1 - 최대공약수와 최소공배수 📌 최대공약수와 최소공배수 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 💡 나의 풀이 최대공약수와 최소공배수의 문제는 유클리드 호제법(Euclidean algorithm)을 이용하면 간단하게 해결 할 수 있다. 유클리드 호제법(Euclidean algorithm)의 정의는 다음과 같다. 2개의 자연수(또는 정식) a, b에 대해서 a를 b로 나눈 나머지를 r이라고 하면(단, a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 다음 사진과 같은 과정을 거치면 손쉽게 최대공약수(GCD)를 구할 수 있는데, 최대공배수(LCM)는 처음 a * b값에 GCD로 나눠주면 된다. 이 문제의 팁을 작성하자면 최소공배수를 구할 때 처음 입력받은 a와 .. 2021. 4. 5.
[ 파이썬(python) ] 프로그래머스 level1 - 이상한 문자 만들기 📌 이상한 문자 만들기 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수를 완성하세요. 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다. 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다. 💡 나의 풀이 s.split(' ')의 중요성을 깨닫게 해준 문제였다. 각 단어는 하나 이상의 공백문자라고 했는데, 문제를 간과하고 s.split()만 사용해서 정답률이 31%로 나왔었다. for ~ in range(len)), for ~ in enumerate 중 내가 쓰기 편한 코드인 enumerate를 사용했다. 다른사람은 내가 작성한 코드를 한 줄로 표현했다. 이 코드를 한 줄로 표현하니까 코드가.. 2021. 4. 2.
[ 파이썬(python) ] 프로그래머스 level1 - 휴대폰 번호 가리기 📌 휴대폰 번호 가리기 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수를 완성해주세요. 💡 나의 풀이 처음에 든 생각은 for range(len))문을 사용하려고 했는데, 가독성을 위해 enumerate로 수정했다. 하지만, 한 줄로 작성한 나의 코드마저 다른 사람의 코드에 비해서는 긴 코드였다. s[0:-4]까지는 *로 정해져있으니까 그것을 유지한채 나머지 s[-4:]만큼만 떼서 가져오면 됐었는데 문제풀때는 왜 생각이 안 났을까😓 😓 # 내 코드 def solution(ㄴ): return ''.join(['*' if idx < len(s)-4 else val for idx, val in enumerate(s)]) # 다른사람의 코드 def solution(s): r.. 2021. 4. 2.
[python] 백준 9012 - 괄호 📍 백준 9012 - 괄호 문제: 백준 9012 - 괄호 💡 나의 풀이 스택에 대해 공부를 하던 중 관련된 문제를 풀고 싶어 백준을 기웃거리다 찾은 문제였다. Parenthesis String 관련된 문제 중 괄호가 (,)로 고정되어있어 그나마 쉽다고 생각했는데 정답판정까지의 시간이 상.당.히. 오래걸렸다. (조건문에 열린괄호를 닫힌괄호라고 쓰고 1시간동안 헤맨건 비밀 🤣 🤣) 먼저, PS는 열린괄호와 닫힌괄호가 정상적으로 맞아떨어지면 YES라고 출력한다. 그런데, 정상적으로 떨어지지 않는경우를 따져봐야하는데 나는 이렇게 생각했다. 우선, 예제 입력의 값 중 NO라고 출력되는 값들만 쭉 적어봤다. 예제 입력 1-1의 경우 마지막 )가 나왔을 때 이미 열린 괄호는 맞아 떨어지고 없기 때문에 NO라고 출력되.. 2021. 4. 1.
[python] 백준 14425 - 문자열 집합 📍 백준 14425 - 문자열 집합 문제: 백준 14425 - 문자열 집합 💡 나의 풀이 저번에 풀었던 듣보잡 문제와 비슷한데, 시간복잡도를 추가적으로 고려해야하는 문제였다. 입력조건에 N과 M이 (1 2021. 4. 1.