이번 문제는 2차원 배열로 주어진 리스트에서 의상의 이름, 의상의 종류 라는 식으로 주어진다면 이때 옷을 종류 별로 어떻게 입을수 있는가? 단 최소 한개의 의상은 입니다.첫번째 예제를 확인해 본다면 "yellowhat", "headgear" / "bluesunglass
삽입 정렬은 각 반복에서 정렬되지 않은 요소를 적절한 위치에 배치하는 정렬 알고리즘 이다.Ex) 9, 5, 1, 4, 3다음의 배열이 있다고 한다.배열의 첫 번째 요소는 정렬된 것으로 간주한다. 두 번째 요소를 가져와서 별도로 KEY(5)로 빼낸다. 그리고 첫 번째 요
프로그래머스에서 코딩테스트 고득점 Kit문제에서 해시 문제를 풀어보려고 한다.일단 문제를 이해해 보면 마라톤 참가를 한 선수들이 있는데 한명의 선수만 완주를 못했다. 거기에서 그 사람을 찾아라 라는 문제라고 이해를 했다.처음 문제를 접했을때는 해시알고리즘을 생각 하지
해시알고리즘 두번째 문제 전화번호 목록이다.문제를 보면 전화번호부를 리스트 형식으로 주는데 첫번째 예를 보면 "119", "97674223", "119552421" 이렇게 나와있는걸 볼수 있다 여기서 어떤 한 번호가 다른 사람의 번호의 접두어 즉 시작점을 알리는 문자인
현재 상황에서 지금 당장 좋은 것만 고르는 방법문제에서 반복적으로 선택을 해도 최적의 해를 구할수 있는지 검토 필요루트 노드에서 시작해서 단말노드까지의 합의 최대값을 찾고 싶다. 그럴때 최적의 해를 구해라.실제 눈으로 봐도 5 - 7 - 9 = 21 라는게 쉽게 보인다
이 문제의 가장큰 함정은 옷을 여벌로 가지고 있는 사람이 옷을 도난 당할수 있는 상황도 겹친다는 것이기 때문에 set을 이용해서 옷을 가져온사람과 옷을 도난당한사람이 중복되지 않게 정리를 하고 옷을 빌려준 사람은 set에서 빼주어야 정확하게 값을 구할수가 있다.
버블 정렬은 인접한 두 요소를 비교하여 의도한 순서가 될 때까지 교체하는 정렬 알고리즘이다. 물 속의 기포가 표면으로 올라오는 것처럼 배열의 각 요소는 각 반복에서 끝으로 이동한다고 해서 버블 정렬이라고 부른다.데이터를 오름차순으로 정렬을 한다고 가정해보자.1\. 첫
선택 정렬은 각 반복에서 정렬되지 않은 목록에서 가장 작은 요소를 선택하고 해당 요소를 정렬되지 않은 목록의 시작 부분에 배치하는 정렬 알고리즘 이다.Ex) 20, 12, 10, 15, 2첫 번째 요소를 최소값(minimum)으로 설정한다.20, 12, 10, 15,
자료구조는 데이터를 효율적으로 조직화하고 저장하는 방법을 정의하는 학문이다. 이를 통해 데이터를 쉽게 검색, 삽입, 삭제 및 조작할 수 있다. 자료구조는 소프트웨어 개발에서 매우 중요한 개념으로, 프로그램의 성능과 효율성에 직접적인 영향을 미친다.적절한 자료구조를 선택
1차시 풀이주어진 배열의 값을 맨앞에서 하나씩 뽑은다음에 stack이라는 빈 배열에 넣어주고 넣어 줄때 존재 여부 확인하고 없을때만 추가해주는 방법1차시 결과주어진 배열의 크기가 커지게 되면 시간이 많이 걸려서 효율성 테스트에서 불합격 한듯 하다..2차시 풀이1차시는
예로 첫번째 예시에서 작업 시간은 \[7, 3, 9] 시간이 걸리는것을 확인할수 있다.순차적으로 앞선 사람의 작업시간이 본인보다 높으면 기존 값에 1을 더해줘서 함께 작업하는 것으로 처리한다.
주어진 값에서 2의 배수만큼 순간이동이 가능하므로 역으로 5라고 했을때 주어진 값에서 2의 배수인지 확인하고 아니라면 -1을 이동하고 2로 나누어 준다.위 과정을 재귀함수로 불러와 주고 더 이상 이동이 불가능한 1이 떨어 졌을때 return을 해준다.위 코드의 문제는
1차적으로 people Array값을 sort를 통해서 순서를 정렬해주고 그 후에 맨처음값과 마지막 값을 더했을때 만약 마지막 값이 limit 값을 초과 한다면 마지막 값을 pop해주고 다시 맨처음값과 마지막 값이 limit 값과 같거나 또는 작다면 둘다 pop 처리
n이 1일경우 1 - 1가지n이 2일경우 1,1, 2 - 2가지n이 3일경우 1,1,1, 2,1, 1,2 - 3가지n이 4일경우 1,1,1,1, 2,1,1, 1,2,1, 1,1,2, 2,2 - 5가지n이 5일경우 1,1,1,1,1, 2,1,1,1, 1,2,1,1, 1,
귤의 종류를 최소화 하기 위해서 Object를 이용해서 귤의 중복 개수를 찾고 순차적으로 sort를 한다.(3, 2), (2, 2), (5, 2), (1, 1), (4, 1)이때 순차적으로 귤의 개수만큼 k에서 빼고 만약 k의 값이 0보다 작거나 같아지면 더이상 귤을
대진에서 승리를 할경우 N/2로 시작을 한다고 하였으니 경기를 했다고 가정해서 각 부여 받은 번호에 N/2를 해주는데 홀수가 걸릴경우 올림처리를 해준다.그 둘의 차이가 1이 날 경우 경기를 붙는다고 생각하여 차이가 1이 날때 까지 재귀함수를 돌려준다.간과한점이 있었다.
number값으로 들어오는 4177252841값을 array형태로 변형 시킨다.number에서 k개 만큼 제거한 수의 limit을 지정한다.빈 int형 number 배열의 크기만큼의 array Stack을 선언한다. 0,0,0,0,0,0,0,0,0,0i가 0번째 일때는
시작 노드에서 한 경로를 최대한 깊이 탐색한 후, 더 이상 탐색할 수 없을 때 되돌아와 다른 경로를 탐색한다.스택(Stack) 또는 재귀를 사용하여 구현할 수 있다.일반적으로 그래프나 트리에서 깊이 방향으로 탐색한다.깊이를 우선으로 탐색하기 때문에 어떤 경로에서 더 이
누적합 알고리즘은 배열이나 리스트와 같은 데이터 구조에서 각 요소까지의 합을 계산하는 알고리즘이다. 이 알고리즘은 특정 요소의 값을 구할 때 매번 모든 요소를 다시 계산하는 것이 아니라 이전까지의 합을 이용하여 효율적으로 계산한다.간단한 예제로 \[1, 2, 3, 4,
주로 배열이나 리스트와 같은 순차 데이터 구조에서 사용되는 알고리즘 기법 중 하나이다. 이 알고리즘은 두 개의 포인터를 사용하여 특정 조건을 만족 하는 부분 구간을 찾거나, 두 포인터 사이의 특정 조건을 만족시키는 요소를 찾는 데 사용된다.투 포인터 알고리즘은 보통 두