NCS 기반으로 개편된 2020 정보처리기사의 경우 자료구조 파트가 소프트웨어 개발 과목으로 넘어왔다. 확실히 삭제된 부분도 많고, 새로 추가된 부분도 많고 전체적인 구조도 많이 바뀐 것 같다. 자료구조의 분류 - 선형 구조: 배열, 선형리스트(연속리스트, 연결리스트) 스택, 큐, 데크 - 비선형 구조: 트리, 그래프 배열 (Array) - 동일한 자료형의 데이터들이 같은 크기로 나열됨 - 순서를 갖고 있는 집합 - 기억장소의 추가가 어려움 - 데이터 삭제 시 메모리 낭비 발생 연결리스트 (Linear List) - 노드의 포인터를 이용해 서로 연결시킨 자료 구조 - 노드의 삽입, 삭제 작업이 용이함 - 링크가 필요하기 때문에 순차 리스트에 비해 기억 공간의 이용 효율이 좋치 않음 - 포인터를 찾아야해서..
스택/큐 - 쇠막대기, 문제 확인 처음보는 신기한 유형의 문제이다. 문제 설명은 아래와 같다. 쇠막대기를 아래에서 위로 겹쳐놓고 레이저를 위에서 수직으로 발사해 쇠막대기를 자르려 함 짧은 쇠막대기가 긴 쇠막대기 위에 오도록 배치 각 쇠막대기를 자르는 레이저는 적어도 하나 존재 레이저는 어떤 쇠막대기의 양끝점과도 겹치지 않음 레이저는 ()로 표현함 쇠막대기의 왼쪽 끝은 (로, 오른쪽 끝은 )로 표현 쇠막대기, 레이저의 배치를 표현한 문자열 arrangement가 주어질 때, 잘린 쇠막대기 조각의 총 개수를 return 스택/큐 - 쇠막대기, 문제 풀이 먼저 레이저 ()를 전부 *값으로 변경해주었다. def solution(arrangement): answer = 0 arrangement = arrangem..
스택/큐 - 프린터, 문제 확인 문제 설명은 아래와 같다. 대기목록의 가장 앞에 있는 문서의 중요도보다 높은 문서가 있다면, 해당 문서를 대기목록의 맨뒤로 보냄 없다면, 인쇄함 priorities : 대기목록에 있는 문서의 중요도가 담긴 배열 lcoation: 인쇄를 요청한 문서가 대기목록의 어떤 위치에 있는지 내가 요청한 문서가 몇 번째로 인쇄되는지 return 예를 보면, [2,1,3,2]의 경우 아래의 순서대로 인쇄가 진행되고 lcoation이 2인 경우, 3을 의미하므로 가장 첫번째로 뽑히는 것을 알 수 있다. 따라서 return 값은 1이다. 초기) priorities=[2,1,3,2] 1) priorities=[1,3,2,2] 2) priorities=[3,2,2,1] 3) priorities..
프로그래머스 스택/큐 - 기능개발, 문제 확인 문제 설명은 아래와 같다. 각 기능은 진도가 100%일 때, 서비스에 반영할 수 있음 각 기능의 개발속도는 모두 다름 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발되면, 앞에 있는 기능이 배포될 때 함께 배포됨 progress : 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 speeds : 각 작업의 개발 속도가 적힌 정수 배열 배포는 하루에 한번 할 수 있음 예를 들어 진도율이 95%인 작업의 개발속도가 4%라면 배포는 2일 뒤에 이루어짐 각 배포마다 몇개의 기능이 배포되는지를 리턴 문제 설명만 봐서는 잘 이해가 가지 않으니 예시를 함께 보자. 첫 기능의 경우 93% 완료되어있고 하루에 1%씩 작업이 가능하므로 7일간 작업 후 배포가 된다..
프로그래머스 스택/큐 - 다리를 지나는 트럭, 문제 확인 문제 설명은 아래와 같다. 트럭 여러대가 일차선 다리를 정해진 순서대로 건넘 모든 트럭이 다리를 건너려면 몇초가 걸리는지 알아내야 함 트럭은 1초에 1만큼 움직임 다리길이 : bridge_length, 다리무게: weight (까지 견딤) 예를들어, 길이가 2이고 10kg 무게를 견디는 다리 있을 때, 무게가 [7,4,5,6]인 트럭이 순서대로 최단시간안에 다리를 건너려면 다음과 같고 모든 트럭이 다리를 지나기 위해 최소 8초가 걸린다. 경과시간 다리를 지난 트럭 다리를 건너는 트럭 대기 트럭 0 [] [] [7,4,5,6] 1~2 [] [7] [4,5,6] 3 [7] [4] [5,6] 4 [7] [4,5] [6] 5 [7,4] [5] [6] 6~..
지난 포스팅에서 프로그래머스 해시문제 4개를 모두 마치고 오늘은 스택/큐 문제를 시작하도록 하겠다. 프로그래머스 스택/큐 - 탑, 문제 확인 문제 설명은 아래와 같다. 수평 직선에 탑 N대를 세움 모든 탑의 꼭대기에 신호를 송수신하는 장치를 설치 신호는 신호를 보낸 탑보다 높은 탑에서만 수신 가능 한번 수신된 신호는 다른 탑으로 송신되지 않음 탑의 높이를 담은 배열 heights 주어질 때 각 탑이 쏜 신호를 어떤 탑에서 받았는지 기록한 배열을 리턴 신호를 수신하는 탑이 없으면 0으로 표기 예를 들어, 아래와 같이 높이가 6,9,5,7,4인 다섯개의 탑이 있을 때 왼쪽으로 동시에 레이저 신호를 발사하면 다음과 같이 신호를 주고받게 된다. 즉, 높이가 5(4)가 보낸 신호는 4(7)이 받고, 4(7)이 보..
프로그래머스 해시 - 베스트앨범, 문제 확인 프로그래머스 해시 마지막 문제이다. 문제 설명은 아래와 같다. 장르별로 가장 많이 재생된 노래 두개를 뽑으려 함 노래는 고유번호로 구분되며 수록 기준은 아래와 같음 1) 속한 노래가 많이 재생된 장르 먼저 수록 2) 장르 내에서 많이 재생된 노래 먼저 수록 3) 장르 내에서 재생횟수가 같은 노래 중에서는 고유번호가 낮은 노래를 먼저 수록 genres : 노래의 장르를 나타내는 문자열 배열 (genres[i]가 노래 장르, i가 고유번호) plays: 노래별 재생 횟수를 나타내는 정수 배열 (plays[i]는 고유번호가 i인 노래가 재생된 횟수) 장르에 속한 곡이 하나라면, 하나의 곡만 선택함 뽑을 노래 두개의 고유번호를 순서대로 리턴하도록 solution 함수..
혼자 정보보안 공부를 시작하면서 여러가지를 책으로도 공부하고 인터넷으로도 공부하고 했지만 제일 오랜 시간을 투자하지 못했던 것이 자료구조, 알고리즘 공부이다. 오늘부터 최소 이틀에 한문제라도 풀어보려 한다. 해시는 키-값 (key-value) 쌍으로 데이터를 저장하는 자료구조로 프로그래머스(programmers)에서는 해당 자료구조를 학습하기 위한 4가지 문제를 제공하고 있다. 프로그래머스 해시 - 완주하지 못한 선수, 문제확인 문제 설명은 아래와 같다. 단 한명의 선수를 제외하고는 모든 선수가 마라톤을 완주함 선수들의 이름이 담긴 배열 participant이 주어짐 완주한 선수들의 이름이 담긴 배열 completion이 주어짐 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성..