스터디 93

python 코딩테스트 - 프로세스

처음 든 생각 - 반복문으로 하나씩 돌되 최댓값이랑도 비교를 해줘야겠네 - 만약 미뤄져야하는 놈이라면 append로 하면 되는데 - 완성된 놈은 어떻게 제거를 하지 -> 실제로도 이 부분에서 가장 고민을 많이했다. 나의 답 def solution(priorities, location): arr = [] for i in range(len(priorities)): for k in range(len(priorities)): if max(priorities) == priorities[k]: arr.append(k) priorities[k] = 0 if len(arr) == len(priorities): break if len(arr) == len(priorities): break return arr.index(..

python 코딩테스트 - 완주하지 못한 선수

처음 든 생각 - 두 개의 리스트를 비교해가면서 있는지 없는지를 확인하면 되겠다. - 동명이인이 있을 수도 있다고 하네 그러면 동명이인의 수도 체크를 해서 진행해야 될까? 나의 답 def solution(participant, completion): participant.sort() completion.sort() for i in range(len(completion)): a = participant.pop() b = completion.pop() if a != b : return a else: continue return participant.pop() 동명이인에 대한 부분을 어떻게 처리해줘야할지 살짝 고민했지만 리스트의 정렬로 해결할 수 있었다. 완주한 선수들의 리스트를 반복문으로 돌면서 하나씩 po..

python 코딩테스트 - DFS, BFS

DFS, BFS는 코딩테스트를 준비해봤다면 꼭 한 번 들어봤을 주제이고 실제로도 매우 자주 등장하는 유형이라고 한다. 그래프 자료구조의 탐색을 알고리즘으로 간단하게 말하면 원하는 데이터를 찾는 과정이다. DFS, BFS를 살펴보기 전에 두 가지 자료구조에 대해서 살펴보아야 한다. 스택 자료구조 먼저 들어온 데이터가 나중에 나가는 형식(선입후출, First in Last out)의 자료구조이다. 쌓기나무나 접시쌓기를 생각하면 된다. 접시를 하나씩 쌓는다고 생각해보자. 그러고 나서 사용할 접시를 집으려고 하면 맨 위에 있는 즉, 가장 마지막에 쌓은 접시를 사용하게 된다. 맨 처음 들어온 접시는 위에 접시가 다 사용되기 전까지는 사용할 수 없다. 스택을 파이썬 코드로 표현하면 다음과 같다. stack = []..

python 코딩테스트 - 그리디, 구현

그리디(Greedy Algorithm) 그리디 알고리즘(탐욕법)은 현재 상황에서 지금 당장 좋은 것만 고르는 방법을 의미한다. 그리디 해법은 단순히 가장 좋은 걸 선택하면 그것이 최적의 해인지 그 정당성을 판단하는 것이 매우 중요. 예제) 처음 든 생각 - 큰 놈이 중요한가, 작은 놈이 중요한가 - 일단 정렬을 해야겠다 - 그룹을 많이 만들어야되니깐 일단 작은 놈들부터 최대한 그룹을 짓는 게 유리하겠다 나의 답안 n = list(map(int, input().split())) n.sort() result = 0 count = 0 for i in n: count+=1 if count >=i: result +=1 count = 0 print(result) 공포도가 1이라면 빠르게 1명만 그룹으로 판단하는 것..

javascript 코딩테스트 - 요격 시스템

A 나라가 B 나라를 침공하였습니다. B 나라의 대부분의 전략 자원은 아이기스 군사 기지에 집중되어 있기 때문에 A 나라는 B 나라의 아이기스 군사 기지에 융단폭격을 가했습니다. A 나라의 공격에 대항하여 아이기스 군사 기지에서는 무수히 쏟아지는 폭격 미사일들을 요격하려고 합니다. 이곳에는 백발백중을 자랑하는 요격 시스템이 있지만 운용 비용이 상당하기 때문에 미사일을 최소로 사용해서 모든 폭격 미사일을 요격하려 합니다. A 나라와 B 나라가 싸우고 있는 이 세계는 2 차원 공간으로 이루어져 있습니다. A 나라가 발사한 폭격 미사일은 x 축에 평행한 직선 형태의 모양이며 개구간을 나타내는 정수 쌍 (s, e) 형태로 표현됩니다. B 나라는 특정 x 좌표에서 y 축에 수평이 되도록 미사일을 발사하며, 발사된..

javascript 코딩테스트 - 바탕화면 정리

문제 설명 코딩테스트를 준비하는 머쓱이는 프로그래머스에서 문제를 풀고 나중에 다시 코드를 보면서 공부하려고 작성한 코드를 컴퓨터 바탕화면에 아무 위치에나 저장해 둡니다. 저장한 코드가 많아지면서 머쓱이는 본인의 컴퓨터 바탕화면이 너무 지저분하다고 생각했습니다. 프로그래머스에서 작성했던 코드는 그 문제에 가서 다시 볼 수 있기 때문에 저장해 둔 파일들을 전부 삭제하기로 했습니다. 컴퓨터 바탕화면은 각 칸이 정사각형인 격자판입니다. 이때 컴퓨터 바탕화면의 상태를 나타낸 문자열 배열 wallpaper가 주어집니다. 파일들은 바탕화면의 격자칸에 위치하고 바탕화면의 격자점들은 바탕화면의 가장 왼쪽 위를 (0, 0)으로 시작해 (세로 좌표, 가로 좌표)로 표현합니다. 빈칸은 ".", 파일이 있는 칸은 "#"의 값을..

javascript 코딩테스트 - 선택 정렬(selection sort)

저번에 살펴본 버블 정렬 bubble sort가 최댓값을 맨 뒤에 확정지을 때까지 스왑을 하는 거였다면 선택 정렬 selection sort는 최솟값을 맨 앞에 확정 짓는 것을 반복하는 것이다. 마찬가지로 순서대로 원리를 살펴보자. 1. 배열을 돌면서 최솟값을 찾는다. 2. 최솟값을 찾은 후에 그 원소와 배열의 맨 앞 원소의 위치를 바꿔준다. 3. 그러면 확정된 최솟값을 제외한 나머지 원소들에 대해 똑같은 과정을 반복한다. 예를 들어 [5, 3, 4, 1, 2]가 있다고 해보자. 그러면 처음에 5만 살펴보면 최솟값은 5로 설정된다. (최솟값 = 5) 그 다음 3을 살펴보면 5보다 작기 때문에 최솟값은 3으로 업데이트 된다. (최솟값 = 3) 그 다음 4를 살펴보면 3보다 크기 때문에 최솟값은 바뀌지 않는..

javascript 코딩테스트 - 버블 정렬 bubble sort

정렬은 코딩테스트나 알고리즘에서 많이 등장하는 주제 중 하나이다. 정렬 알고리즘은 위키피디아에 검색해보면 정말 많이 등장한다. https://en.wikipedia.org/wiki/Sorting_algorithm#Memory_usage_patterns_and_index_sorting Sorting algorithm - Wikipedia From Wikipedia, the free encyclopedia Algorithm that arranges lists in order In computer science, a sorting algorithm is an algorithm that puts elements of a list into an order. The most frequently used orders..

javascript 코딩테스트 - 검색 알고리즘

검색은 말 그대로 간단하다. 어떤 배열안에 해당하는 데이터가 있는지 없는지 확인하기 위한 알고리즘이다. 1. 선형 검색 알고리즘 (linear search) 검색을 하기 위한 가장 단순한 사고방식의 알고리즘이라고 생각하면 된다. 만약 전체의 집합이 있고 찾고자하는 값이 있다면 전체 집합을 전부 다 살펴보면 된다. Write a function called linearSearch which accepts an array and a value, and returns the index at which the value exists. If the value does not exist in the array, return -1. linearSearch([10, 15, 20, 25, 30], 15) // 1 lin..

728x90