Algorithm/프로그래머스 41

세무민의 알고가자 : 프로그래머스 문자열 다루기 기본 문제 풀기

주말 약속을 나가기 전 잠깐 알고리즘 문제를 하나 풀었다. 오늘 풀어 본 문제는 문자열 다루기 기본! 말 그대로 기본 문제! 문제 설명 및 입출력 예시 풀이 나는 이 문제를 보자마자 바로 생각난 건 아스키코드! 이거 하나면 10분도 안되서 문제를 풀 수 있다. 숫자의 아스키코드는 0~9까지 즉 48~57! 요약하면 1. S의 길이가 4 또는 6이 만족하는 지 Check 2. 문자열에 내용이 ord(0) ~ ord(9)까지 속하는지 Check 코드 def solution(s): if len(s) != 4 and len(s) != 6: return False check = True for i in s: if ord(i)>= ord("0") and ord("9") >= ord(i): continue else:..

세무민의 알고가자 : 프로그래머스 같은 숫자는 싫어 문제 풀기 [부제 : for와 while의 시간 차이]

오늘 풀어 볼 문제는 같은 숫자는 싫어! 사실 이 문제는 그냥 포스팅 할 생각이 없었지만 for문과 while문의 속도 차이로 문제 풀이가 달라져서 포스팅 하게 됬다. 문제 설명 & 입출력 예시 풀이 이번 문제는 set을 사용하면 안되는 문제! set은 중복되는 값을 다 제거하기 때문! 따라서 이번 문제는 while문이나 for문으로 접근하는 것이 중요합니다. 문제가 쉬워서 말 그대로 같은 값이면 continue를 해주면 되겠죠? 코드 def solution(arr): answer = [] count = 0 while len(arr) > 0: temp = arr[0] if len(answer) == 0: answer.append(temp) elif answer[count] == temp: arr = ar..

세무민의 알고가자 : 프로그래머스 3진법 뒤집기 문제 풀기

최근에 면접 준비하느라 포스팅을 못했는데 면접이 끝나서 오늘 일어나자마자 푼 문제를 포스팅 해보려구 합니다! 오늘 푼 문제는 3진법 뒤집기! 문제 설명 & 제한 사항 & 입출력 예시 풀이 이번 문제는 담백 그 자체! 사실 어렵지 않다. 10진법 -> 3진법 -> 역순 -> 10진법 위에 조건처럼 구현해주면 되는데 여기서 리스트를 이용하면 역순부분을 사용하지 않아도 된다. 즉! 10진법 -> 3진법 -> 10진법 바로 코드를 보도록 하자! # 첫번째 코드 def solution(n): result = [] count = n while count > 0: tmp = count % 3 result.append(tmp) count = int(count / 3) i, check = -1, 0 answer = 0 ..

세무민의 알고가자 : 프로그래머스 문자열 내 마음대로 정렬하기 문제 풀이

오늘 풀어 볼 문제는 문자열 내 마음대로 정렬하기! 문제 설명 및 제한 조건 입출력 풀이 사실 이번 문제는 10분?정도 걸렸던거 같네요 ㅎㅎ 사실 너무 쉬운 문제라서 포스팅하는게 맞는지 의문이 들었지만 해봅니다. 이번 문제에서는 n번째 값을 기준으로 정렬을 해주면 됩니다. 또한 같은 값이 존재한다면 사전순으로 나열하면 된다고 하네요! 여기서 초점을 둬야하는 부분은?! 1. 정렬을 2번 해주기! 정렬을 2번하는 건 사전순으로 한번 정렬해준 뒤 n을 기준으로 정렬해주기 위해서! 이렇게 문제를 접근하면 끝입니다. 코드는 2가지 방법으로 풀어봤어요! 코드 def solution(strings, n): # 방식 1 strings.sort() strings.sort(key=lambda x : (x[n])) retu..

세무민의 알고가자 : 프로그래머스 이상한 문자 만들기 문제 풀기

오늘 풀어 볼 문제는 이상한 문자 만들기! 문제 설명 & 제한 사항 & 입출력 예시 문제 풀이 사실 이번 문제는 조금 이해가 안됬다. 문제가 어려워서 이해가 안된것이 아니라 쉬운데 왜 아스키코드로 접근하면 틀렸다고 하는지... 무튼 내가 접근했던 방법은 총 3가지! 1. 아스키 코드로 변환해서 대소문자를 변경해주기 2. str -> list -> str로 쪼개서 만들기 3. list 상태로 구분하기 3가지 중 정답은 3번이였다. 위에 문제를 접근하기 전 가장 먼저 체크해야 하는 부분은 홀수와 짝수를 구분해서 대소문자로 변경해주는 것인데 이는 X % 2 == 0이라는 조건이 만족한다면 대문자, 그렇지 않다면 소문자! 배열이 0부터 시작하기 때문에 잘 체크해야 한다. 무튼 아스키코드로 접근하려고 했던 방식은..