Computer Science/자료구조 116

코드테스트 Arrays 초급 | find pivot index, minimum size Subarray sum | 코드없는 프로그래밍

기본 개념 : 슬라이딩 영상 - 코딩 테스트,초급, find pivot index - YouTube 문제 - (2) Find Pivot Index - LeetCode Find Pivot Index - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com pivot의 범위는 1에서 출발해서, len(s) - 2까지 돈다. pivot 왼쪽에 있는 숫자들의 합과 pivot 오른쪽에 있는 숫자들의 합이 같으면, pivot을 return한다. 내 풀이 - 푸는 데 한참 걸렸다...

코딩테스트 Arrays moveZeros | 코드없는 프로그래밍

코딩 테스트, 초급, moveZeros - YouTube 문제 출처 - (1) Move Zeroes - LeetCode Move Zeroes - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 내 풀이 class로 되어있어서 신기함. class Solution: def moveZeroes(self, nums): index = 0 count = 0 while True: if index == len(nums) - count: return nums else: if nu..

코딩테스트 기초 배열 Binary Search | 코드없는 프로그래밍

출처 코드없는 프로그래밍 코딩테스트, 기초, 배열 인터뷰 바이너리 서치 - YouTube array - binary search 배열이 정렬이 되어있는 상태에서 어떤 값을 찾아달라! 어떤 배열 [1,3,5,6,7,15,20]에서 15의 인덱스를 찾고자 한다면? #어떤 배열 [1,3,5,6,7,15,20]에서 15의 인덱스를 찾고자 한다면? def solution(s, a): index = 0 search_index = 0 while True: if a == s[search_index]: index = search_index break elif a < s[search_index]: search_index //= 2 else: search_index += len(s) search_index //= 2 ret..

코딩테스트 Arrays 이론 | 코드없는 프로그래밍

출처 - 코드없는 프로그래밍 인터뷰 배열 기초 - YouTube Array - 가장 간단한 자료 구조 array란 데이터들이 연속적으로 이어져있고 랜덤 엑세스를 지원하는 자료 구조를 말한다. * 랜덤 엑세스 - 인덱스를 통해 바로 접근할 수 있게 해준다. 배열 문제는 인덱스를 사용할 수 있다는 점을 중요하게 사용하게 됨. ex - array를 활용한 BackTracking (?) 기본적인 문제의 경우, sorting과 관련이 된다. sorting의 종류에는 heap sort / quick sort / merge sort가 있다. 배열이 stable하면 merge sort 배열이 unstable하면 quick sort, heap sort를 사용한다. 이때 stable한 것은, 정렬이 된 후에도 ABCDE ..

Back to 알고리즘! | 코딩테스트 연습 level 2- 124 나라의 숫자들

코딩테스트 연습 - 124 나라의 숫자 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr def solution(n): answer = '' # 3을 빼고 3을 나누는 것을 반복한다. listing = [ '4','1', '2'] repeat = 1 while True: if n < 3: answer+= listing[n] break else: if n % 3 == 0: answer += listing[0] n = n // 3 - 1 if n == 0: break else: answer += listing[n%3] n //= 3 if n == 0: break answer = answer[::-1] return answer print..

[7.4] 이상한 문자 만들기 알고리즘 (50/100)

코딩테스트 연습 - 이상한 문자 만들기 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 이상한 문자 만들기 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 programmers.co.kr def solution(s): answer = '' i = 0 split = 0 while True: if i == len(s): break if s[i] == ' ': i += 1 split = 0 answer += ' ' else: if split % 2 == 0: split += 1 answer += s[i].upper() i += 1 else: spli..

[7.4] 시저 암호 알고리즘 (49/100)

코딩테스트 연습 - 시저 암호 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 시저 암호 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀 programmers.co.kr https://programmers.co.kr/learn/courses/30/lessons/12926 def solution(s, n): answer = '' upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" under = "abcdefghijklmnopqrstuvwxyz" for i in range(len(s)): if s[i].isu..

[7.3] 비밀지도 알고리즘(48/100)

코딩테스트 연습 - [1차] 비밀지도 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다 programmers.co.kr def binary(n, arr1): return_answer = [] for i in arr1: answer = '' while True: if i < 2: answer += f'{i}' break else: answer += f'{i%2}' i //= 2 if len(answer) < n: answer += '0' * (n-len(answer)) answer = ..

[7.3] 실패율 - 파이썬 알고리즘 문제 풀이()

코딩테스트 연습 - 실패율 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스 programmers.co.kr 고민.. #for i in range(1, 6): #arrived = 0 #yet = 0 # for j in stages: #도전한 사람 #j >= i면 도전한 것 #아직 클리어 못함 #j = i면 클리어 못한 것 #j를 다 파악한 뒤에 # fail = yet / arrived #실패율을 각각 구해서 정렬할까? #fail.append([i,fail]) #1 기준으로 sort #answ..

[6.30] 신규 아이디 추천 알고리즘 (47/100)

1. 신규 아이디 추천 코딩테스트 연습 - 신규 아이디 추천 | 프로그래머스 (programmers.co.kr) def solution(new_id): #소문자 new_id = new_id.lower() new_id = list(new_id) allowed = ['-', '.', '_'] i = 0 #허용 문자 거르기 while i < len(new_id): if new_id[i] in allowed or new_id[i].isalpha() or new_id[i].isdigit(): i += 1 else: del new_id[i] new_id = ''.join(new_id) #마침표 거르기 while new_id.find('..') != -1: index = new_id.find('..') if inde..