본문 바로가기
728x90

프로그래머스 풀이8

프로그래머스 -이진 변환 반복하기- LV2 1. 맨처음 주어진 문자열을 기준으로 0을 제거한다. 2. 앞선 작업을 마무리 한 문자열의 길이를 이진변환한다. 3. 이를 반복한다. a = bin(4) -> "0b100" a[2:] -> "100" def solution(s): answer = [] cnt1 = 0 -> 제거 0 cnt2 = 0 -> 회차 while s != '1': -> 문자열이 1이 되면 탈출 length = len(s) s = s.replace('0','') -> 0을 공백으로 바꿔주는 매서드 cnt1 += length - len(s) -> 0을 얼마만큼 없앴는지 카운트 s = bin(len(s)) -> s의 길이를 2진수로 만들기 s = s[2:] -> s는 0b11111 형태로 바뀌기 때문에 index 2부터 끝까지 s문자열로.. 2023. 1. 9.
프로그래머스 -옹알이 (2)- LV1 "aya", "ye", "woo", "ma" 이 4가지 발음이 2번 연속 같은 발음이 나오는 것은 금지. ex. "ayaaya" 연속된 발음이 없을 경우 해당 발음을 띄어쓰기로 대체. 반복문이 끝나면 띄어쓰기 무시하고 문자열 길이 확인하여 길이가 0 이면 answer 값 1 추가 새로 알게 된 점은 if "ye" * 2 not in "mayeye": 다음과 같은 문법에서 "ye" * 2 = "yeye" 인데 해당 문자열("yeye")이 "mayeye"에 있는지 없는지 여부를 확인하는 로직이란 것 def solution(babbling): answer = 0 for item in babbling: for w in [ "aya", "ye", "woo", "ma" ]: if w*2 not in item: #연.. 2023. 1. 8.
프로그래머스 -햄버거 만들기- LV1 햄버거는 빵, 야채, 고기, 빵 순으로 쌓았을 때 햄버거 하나가 완성된다. 이를 정수로 표현하면 1,2,3,1이다. 주어진 배열인 ingredient에서 연속으로 1,2,3,1이 확인되면 햄버거를 하나 만들고 해당 배열을 제거한다. 새로운 배열 s에 재료들을 하나씩 쌓아가며(append) 1,2,3,1의 연속이 나오는지 확인하기 위해 s[-4:0]를 확인하였다. 만약 햄버거를 만들었을 경우 해당 재료를 리스트에서 없애준다. def solution(ingredient): answer = 0 s = [] for i in ingredient: s.append(i) if s[-4:] == [1,2,3,1]: answer+=1 del s[-4:] return answer 2023. 1. 8.
프로그래머스 -푸드 파이트 대회- LV1 list를 String으로 바꾸는 문법에 대해 잘 몰랐던 문제. food = [1,3,4,6] 라고 한다면 food 리스트의 길이만큼 반복문을 돌리며 food의 각 element가 짝수거나 홀수 일 수 있는데 이를 2로 나눈 몫을 구한다. (7일 경우 3, 6일 경우 3) element 홀수일 경우에 남은 하나는 버리기 때문에 위와 같이 몫을 구하는 연산을 진행하였다. 해당 몫으로 그 값 만큼 idx를 list에 append 해준다. 새로운 list에 기존 list의 element 들을 append 하고 가운데 물을 나타내는 0을 append 마지막으로 기존 list를 반전시킨 list를 append한 후 list를 String으로 바꾸는 동작을 수행시키고 반환하면 종료 알게 된 문법 answer = '.. 2023. 1. 8.
프로그래머스 -과일 장수 - LV1 문제를 이해하면 어렵지 않은 문제. 최대 이익을 얻기 위해선 최대한 점수가 높은 사과끼리 모아놓아야 한다. 하나라도 점수가 낮은 사과를 상자에 담으면 가치가 대폭 하락하기 때문이다. 그렇기에 리스트에서 값을 편하게 쓰기 위해 내림차순으로 정렬하여 밸류가 높은 사과를 전방으로 끌어와 한 상자에 담긴 사과의 개수 만큼 넣어주며 총 이익을 계산한다. 단, 한 상자에 들어가는 사과의 개수 보다 남은 사과의 개수가 작을 경우 버리는 로직 또한 구현하자 def solution(k, m, score): answer = 0 length = len(score) score.sort(reverse = True) for i in range(0, length, m): #step을 m으로 둔다 if length - i < m: .. 2023. 1. 8.
프로그래머스 -문자열 나누기 - LV1 문제 이해만 하면 어렵지 않은 문제. "banana"를 예로 들면 맨처음 나오는 'b' 알파벳 기준으로 하며 cnt1의 값을 늘린다. (1)(cnt1은 기준과 같은 알파벳의 개수이다.) 다음 나오는 알파벳 'a'는 기준 'b'와 다르기 때문에 cnt2의 값을 1 늘린다.(1) (cnt2는 기준과 다른 알파벳의 개수이다.) cnt1의 값과 cnt2의 값이 동일하므로 문자열을 잘라준다. & cnt1, cnt2의 값을 초기화해준다. 다음 나오는 알파벳 'n' 알파벳 기준으로 하며 cnt1의 값을 늘린다.(1) 다음 나오는 알파벳 'a'은 기준 'n'와 다르기 때문에 cnt2의 값을 1늘린다.(1) cnt1의 값과 cnt2의 값이 동일하므로 문자열을 잘라준다. & cnt1, cnt2의 값을 초기화해준다. 다음 .. 2023. 1. 6.
728x90