분류 전체보기
-
문제 표의 행을 선택, 삭제, 복구하는 프로그램을 만들어야 한다. "U X": 현재 선택된 행에서 X칸 위에 있는 행을 선택합니다. "D X": 현재 선택된 행에서 X칸 아래에 있는 행을 선택합니다. "C" : 현재 선택된 행을 삭제한 후, 바로 아래 행을 선택합니다. 단, 삭제된 행이 가장 마지막 행인 경우 바로 윗 행을 선택합니다. "Z" : 가장 최근에 삭제된 행을 원래대로 복구합니다. 단, 현재 선택된 행은 바뀌지 않습니다. 처음 표의 상태에서 모든 명령어를 수행한 후 표의 상태를 비교해 삭제되지 않은 행은 O, 삭제된 행은 X로 표시해 문자열의 형태로 리턴하기 제한사항 5
[프로그래머스] 표편집문제 표의 행을 선택, 삭제, 복구하는 프로그램을 만들어야 한다. "U X": 현재 선택된 행에서 X칸 위에 있는 행을 선택합니다. "D X": 현재 선택된 행에서 X칸 아래에 있는 행을 선택합니다. "C" : 현재 선택된 행을 삭제한 후, 바로 아래 행을 선택합니다. 단, 삭제된 행이 가장 마지막 행인 경우 바로 윗 행을 선택합니다. "Z" : 가장 최근에 삭제된 행을 원래대로 복구합니다. 단, 현재 선택된 행은 바뀌지 않습니다. 처음 표의 상태에서 모든 명령어를 수행한 후 표의 상태를 비교해 삭제되지 않은 행은 O, 삭제된 행은 X로 표시해 문자열의 형태로 리턴하기 제한사항 5
2023.06.05 -
문제 여벌 체육복이 있는 학생이 앞 번호나 뒷 번호 학생에게 체육복을 빌려줄 수 있다. 전체 학생 수 n, 체육복을 도난당한 학생들의 번호 배열 lost, 여벌 체육복을 가져온 학생의 번호 reserve가 있을 때 체육수업을 들을 수 있는 학생의 최댓값 구하기 2 뒷 번호 순으로 체육복 빌릴 수 있는지 확인 for num in sorted(list(lost)) : if num-1 in reserve : reserve.remove(num-1) elif num+1 in reserve : reserve.remove(num+1) else: n -= 1 return n References 프로그래머스 고득점Kit 그리디
[프로그래머스] 체육복문제 여벌 체육복이 있는 학생이 앞 번호나 뒷 번호 학생에게 체육복을 빌려줄 수 있다. 전체 학생 수 n, 체육복을 도난당한 학생들의 번호 배열 lost, 여벌 체육복을 가져온 학생의 번호 reserve가 있을 때 체육수업을 들을 수 있는 학생의 최댓값 구하기 2 뒷 번호 순으로 체육복 빌릴 수 있는지 확인 for num in sorted(list(lost)) : if num-1 in reserve : reserve.remove(num-1) elif num+1 in reserve : reserve.remove(num+1) else: n -= 1 return n References 프로그래머스 고득점Kit 그리디
2023.06.04 -
문제 퍼즐 조각을 1x1 칸으로 나뉜 정사각형 게임 보드의 빈 공간에 적절히 올려놓으려 한다. 3
[프로그래머스] 퍼즐 조각 채우기문제 퍼즐 조각을 1x1 칸으로 나뉜 정사각형 게임 보드의 빈 공간에 적절히 올려놓으려 한다. 3
2023.06.04 -
1) 정렬 더보기 정렬에는 다양한 방법이 있는데, 알고 있는 방법에는 무엇이 있나요? 키 값을 비교해 자료를 삽입해 정렬하는 선택 정렬, 버블 정렬, 퀵 정렬, 병합 정렬 등의 방법이 있고, 계수 정렬과 같이 값을 비교하지 않고 정렬하는 방법도 있습니다. 왜 정렬 알고리즘이 많을까? 정렬 알고리즘 하나가 무조건 우수한게 아니라 주어진 상황에 따라 trade-off가 있기 때문입니다. 구체적인 Trade-off 예시 퀵소트는 평균의 경우 O(N logN)을 갖지만 정렬된 경우 O(N^2)의 시간 복잡도를 갖게 됩니다. 삽입 정렬은 평균 O(N^2)을 갖지만 정렬된 경우 O(N)의 시간 복잡도를 갖게 됩니다. 이미 정렬된 데이터에 대해 가장 좋은 성능을 보이는 정렬 알고리즘은? 삽입 정렬로, 자기 앞에 있는..
알고리즘 면접 대비 질문 리스트업1) 정렬 더보기 정렬에는 다양한 방법이 있는데, 알고 있는 방법에는 무엇이 있나요? 키 값을 비교해 자료를 삽입해 정렬하는 선택 정렬, 버블 정렬, 퀵 정렬, 병합 정렬 등의 방법이 있고, 계수 정렬과 같이 값을 비교하지 않고 정렬하는 방법도 있습니다. 왜 정렬 알고리즘이 많을까? 정렬 알고리즘 하나가 무조건 우수한게 아니라 주어진 상황에 따라 trade-off가 있기 때문입니다. 구체적인 Trade-off 예시 퀵소트는 평균의 경우 O(N logN)을 갖지만 정렬된 경우 O(N^2)의 시간 복잡도를 갖게 됩니다. 삽입 정렬은 평균 O(N^2)을 갖지만 정렬된 경우 O(N)의 시간 복잡도를 갖게 됩니다. 이미 정렬된 데이터에 대해 가장 좋은 성능을 보이는 정렬 알고리즘은? 삽입 정렬로, 자기 앞에 있는..
2023.06.03 -
1. 가장 중요한 건, 어떤 경우(목적)일 때 어떤 자료구조를 사용하면 좋은지를 알고 있는 것 2. 본인의 주 언어 자료구조 내부구현이 무엇으로 되어있는지 알고 가기 자료 구조를 왜 사용할까요? 메모리를 효율적으로 사용하면서 데이터를 빠르고 안정적으로 처리하기 위해 필요합니다. 특정 상황에서 유용하게 사용할 수 있는 자료구조를 선택하는 것이 중요합니다. 자료를 정리할 때 가장 중요한 것은 무엇일까요? 데이터와 목적에 따라 다르다고 생각합니다. 처리 시간, 크기, 활용 빈도, 갱신의 정도와 보안 등 고려해야할 점들 중 상황에 따라 우선순위를 정해야한다고 생각합니다. 1) 배열 vs 링크드 리스트 구현상 어떤 특징이 있는지, 시간복잡도가 어떤지, 어떤 경우에 사용하면 좋은지 위 3개 포인트만 제대로 전달하기..
자료구조 면접 대비 질문 리스트업1. 가장 중요한 건, 어떤 경우(목적)일 때 어떤 자료구조를 사용하면 좋은지를 알고 있는 것 2. 본인의 주 언어 자료구조 내부구현이 무엇으로 되어있는지 알고 가기 자료 구조를 왜 사용할까요? 메모리를 효율적으로 사용하면서 데이터를 빠르고 안정적으로 처리하기 위해 필요합니다. 특정 상황에서 유용하게 사용할 수 있는 자료구조를 선택하는 것이 중요합니다. 자료를 정리할 때 가장 중요한 것은 무엇일까요? 데이터와 목적에 따라 다르다고 생각합니다. 처리 시간, 크기, 활용 빈도, 갱신의 정도와 보안 등 고려해야할 점들 중 상황에 따라 우선순위를 정해야한다고 생각합니다. 1) 배열 vs 링크드 리스트 구현상 어떤 특징이 있는지, 시간복잡도가 어떤지, 어떤 경우에 사용하면 좋은지 위 3개 포인트만 제대로 전달하기..
2023.06.03 -
이진탐색 이진탐색이란, 매 탐색마다 탐색 범위를 반으로 좁혀가며 빠르게 탐색하는 알고리즘이다. 이진탐색을 수행하기 위해서는 리스트(배열)가 정렬되어 있어야 한다. ✅ Pseudo Code 크기가 N인 list에서 target이라는 특정 데이터를 찾아내고 싶다고 가정하자. (left와 right는 list의 인덱스를 의미한다.) left = 0, right = n - 1로 초기화한다. mid = (left + right) // 2로 설정한다. 만약, list[mid] == target이라면 탐색을 종료한다. 만약, list[mid] != target이라면, list[mid] > target : right = mid - 1로 갱신하고 2번으로 돌아간다. list[mid] < target : left = mi..
기타 알고리즘 (이진탐색/ 최대공약수와 최소공배수/ 소수 찾기/ 재귀와 반복/ DP와 분할정복/ 그리디/ 백트래킹/ 허프만 코딩)이진탐색 이진탐색이란, 매 탐색마다 탐색 범위를 반으로 좁혀가며 빠르게 탐색하는 알고리즘이다. 이진탐색을 수행하기 위해서는 리스트(배열)가 정렬되어 있어야 한다. ✅ Pseudo Code 크기가 N인 list에서 target이라는 특정 데이터를 찾아내고 싶다고 가정하자. (left와 right는 list의 인덱스를 의미한다.) left = 0, right = n - 1로 초기화한다. mid = (left + right) // 2로 설정한다. 만약, list[mid] == target이라면 탐색을 종료한다. 만약, list[mid] != target이라면, list[mid] > target : right = mid - 1로 갱신하고 2번으로 돌아간다. list[mid] < target : left = mi..
2023.06.02