본문 바로가기

Coding Test Practice16

최댓값과 최솟값 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 생각 정렬을 하자 배열로 만들자 띄어쓰기로 구분되어있으니 split 일단 숫자로 만들고 정렬 map, lambda로 숫자로 만들자 📖 내 코드 def solution(s): answer = sorted(list(map(lambda x : int(x), s.split()))) return str(answer[0]) + " " + str(answer[-1]) 📑 다른 사람의 풀이 def solution(s): s = list(map(int,s.split())) return str(min(s)) + " " + .. 2024. 4. 8.
JadenCase 문자열 만들기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 생각 첫 문자 대문자로 만들고 나머지 소문자로 만드는 capitalize() 함수를 알고 있음 공백문자가 연속으로 나올 수 있는 것 인지 그럼 split()으로 그냥 나누는게 아니라 split(' ')로 공백도 저장해놓아야함 lambda 사랑맨 우짤... ' '.join()으로 합치기 📖 내 코드 def solution(s): return ' '.join(list(map(lambda x : x.capitalize(), s.split(' ')))) 📑 다른 사람의 풀이 def Jaden_Case(s): re.. 2024. 4. 8.
최솟값 만들기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 생각 제일 작은 거 x 제일 큰 거 하면 그나마 제일 작은 값 됨 각각 정렬해서 누적값 구하면 될 듯 📖 내 코드 def solution(A, B): A = sorted(A) B = sorted(B, reverse = True) answer = 0 for i, j in zip(A, B): answer += i*j return answer 📑 다른 사람의 풀이 def solution(A, B): return sum(a*b for a, b in zip(sorted(A), sorted(B, reverse = T.. 2024. 4. 8.
이진 변환 반복하기 💡 생각 문자열에서 0 제거하면서 count로 개수 세놓기 전체 이진변환한 횟수도 세기 길이 c를 2진법으로 표현한 문자열 2진법으로 변환할 때 bin을 사용하게 되면 0b... 형태로 나오므로 [2:] 요걸 추가해줘야 숫자 부분만 구할 수 있다 📖 내 코드 def solution(s): total_count = 0 zero_count = 0 while s != "1": total_count += 1 zero_count += s.count("0") s = str(bin(len(s.replace("0",""))))[2:] return total_count, zero_count 📑 다른 사람의 풀이 def solution(s): a, b = 0, 0 while s != '1': a += 1 num = s.c.. 2024. 4. 8.
올바른 괄호 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 생각 스택으로 "(" 쌓고 ")" 나왔을 때 빼고 하면 될 거 같은데.. 시간 초과남 숫자로 "(" 개수만큼 ")"가 존재하는 지 확인 "(" 없이 ")"가 나와버리면 바로 False 리턴 📖 내 코드 def solution(s): stack = 0 for i in s: if stack < 0: return False if i == "(": stack += 1 else: stack -= 1 return stack == 0 📑 다른 사람의 풀이 x = 0 for w in s: if x < 0: break x.. 2024. 4. 8.
숫자의 표현 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 생각 문제 읽으면서 흐름대로 코드를 짜보면 def solution(n): answer = 0 for j in range(1, n+1): _sum = 0 for i in range(j, n+1): _sum += i if _sum == n: answer += 1 return answer 디져버린 효율성 테스트.. 어떻게 하면 시간복잡도를 줄일 수 있을까 반복문을 한 번만 써야대나 엥 걍 누적합이 n보다 커지면 break 해주면 댐 📖 내 코드 def solution(n): answer = 0 for j in .. 2024. 4. 8.
피보나치 수 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 생각 재귀함수 쓰면 시간초과나는 걸 이미 아는 상태.. 배열을 사용해야하는 게 머리에 박혀있음 F = [0, 1] 로 만들어놓고 끝에서 두 수를 합친 값을 배열에 넣어주는 식으로 진행 📖 내 코드 def solution(n): F = [0, 1] for i in range(n): F.append(F[i] + F[i+1]) return F[n]%1234567 📑 다른 사람의 풀이 간단한 문제라 좋은 풀이가 따로 없는 듯 2024. 4. 8.
다음 큰 숫자 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 생각 이진법으로 변환하는 bin과 문자열 등에서 특정 문자열 개수를 구할 수 있는 count를 사용하면 쉬울 것 같다 📖 내 코드 def solution(n): one_count = bin(n).count('1') while True: n += 1 if one_count == bin(n).count('1'): return n 📑 다른 사람의 풀이 간단해서 딱히 좋은 풀이법을 못 찾겠다 2024. 4. 8.
카펫 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 생각 갈색 타일의 개수는 아래와 같은 패턴을 가진다 (노란색 타일 뭉치 가로 + 노란색 타일 뭉치 세로) x 2 + 4 (brown-4) / 2 = r(노란색 타일 뭉치 가로) + c(세로) 그리고 (가로)x(세로)는 노란색 타일의 개수 r * c = yellow c = yellow // r # c가 자연수 마지막으로 전체 타일의 크기는 (노란색 타일 가로 + 2) x (노란색 타일 세로 + 2) 📖 내 코드 def solution(brown, yellow): for r in range(1, yellow+.. 2024. 4. 4.
영어 끝말잇기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 생각 배열 읽으면서 1) 잘못 이어서 틀린 사람 2) 같은 단어 중복해서 틀린 사람 찾으면 되는데 1번의 경우, 앞 단어의 마지막 글자와 뒷 단어의 첫 글자를 비교하면 되고 2번의 경우, 지금 인덱스 전까지의 배열에서 같은 단어가 존재하는지 count로 검사해 찾아보면 될 것 같다 가장 먼저 탈락하는 사람의 번호 : (걸린 인덱스) % n(사람 수) + 1 그 사람이 자신의 몇 번째 차례에 탈락하는지 : (걸린 인덱스) // n(사람 수) + 1 📖 내 코드 def solution(n, words): an.. 2024. 4. 4.
짝지어 제거하기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 생각 ❌ 입력 문자열의 길이만큼 while 돌려놓고 그 안에서 for 돌면서 같은 문자가 연속되는지 검사, 연속된다면 반복 문자열이 빠진 새로운 문자열 만들고 for 탈출, 다음 while로 넘어가서 만들어진 새로운 문자열로 for 돌면서 같은 문자 연속되는지 검사 반복 1. 탈출했는데 기존 문자열과 만들어진 문자열이 같다 = 더 이상 지울 게 없음 return 0 2. 만들어진 문자열이 비어있다 = 다 지워짐 return 1 3. 둘 다 아님 = 다음 while문 돌기 def solution(s): # .. 2024. 4. 4.
구명보트 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 생각 combinations의 경우 시간 초과, 메모리 초과 실패가 난다 어떻게 접근해야할까... 탐욕 알고리즘 쓰라고 떡하니 써있는데 뭔지 몰라 쓰질 못하는 멍청한 인간 ㅎㅎ 질문하기 흘끔 보고 deque로 풀 수 있는 걸 봤음 ❌ 우선 제일 무거운 애부터 뺄 거기 때문에 people 배열을 큰 순서대로 정렬하고 이를 데크 dq로 만든다. 몇 번 왔다갔다 해야하는지 표시할 answer 정수 플래그를 만든다. dq가 존재하는 동안, 제일 무거운 애와 제일 가벼운 애의 합이 limit 보다 큰 경우 제일 무.. 2024. 4. 4.