본문 바로가기

전체 글24

[프로그래머스] [3차] 파일명 정렬 [3차] 파일명 정렬 개요 - 단어(head) + 숫자 + 단어(tail) 로 이루어진 파일명을 단어와 숫자 순으로 정렬하는 문제이다. - head와 숫자를 구분하는 코드와 단어 > 숫자 순으로 우선순위를 정하여 정렬하는 문제로 Comparable 인터페이스를 이용하면 어렵지않게 해결할 수 있다. 문제 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램의 과거 버전을 모두 담고 있어, 이름 순으로 정렬된 파일 목록은 보기가 불편했다. 파일을 이름 순으로 정렬하면 나중에 만들어진 ver-10.zip이 ver-9.zip보다 먼저 표시되기 때문이다. 버전 번호 외에도 숫자가 포함된 파일 목록.. 2022. 4. 18.
[프로그래머스] 단체사진 찍기 단체사진 찍기 개요 - 카카오의 캐릭터들이 줄을지어 사진을 찍는데, 캐릭터들의 자리에 대한 제약조건을 만족하는 케이스 수를 찾는 문제이다. - dfs(depth first search, 깊이 우선 탐색) 방식을 사용한 캐릭터들의 순열을 구한 뒤 제약 조건들을 만족하는 경우들의 수를 세는 방식으로 해결했다. 문제 가을을 맞아 카카오프렌즈는 단체로 소풍을 떠났다. 즐거운 시간을 보내고 마지막에 단체사진을 찍기 위해 카메라 앞에 일렬로 나란히 섰다. 그런데 각자가 원하는 배치가 모두 달라 어떤 순서로 설지 정하는데 시간이 오래 걸렸다. 네오는 프로도와 나란히 서기를 원했고, 튜브가 뿜은 불을 맞은 적이 있던 라이언은 튜브에게서 적어도 세 칸 이상 떨어져서 서기를 원했다. 사진을 찍고 나서 돌아오는 길에, 무지.. 2022. 3. 26.
[프로그래머스] 오픈채팅방 오픈채팅방 개요 - 채팅방의 입장, 퇴장 이력을 출력하는 문제로 map 자료구조를 사용한다면 어렵지 않게 해결할 수 있는 문제이다. 문제 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오픈 채팅방을 개설한 사람을 위해, 다양한 사람들이 들어오고, 나가는 것을 지켜볼 수 있는 관리자창을 만들기로 했다. 채팅방에 누군가 들어오면 다음 메시지가 출력된다. "[닉네임]님이 들어왔습니다." 채팅방에서 누군가 나가면 다음 메시지가 출력된다. "[닉네임]님이 나갔습니다." 채팅방에서 닉네임을 변경하는 방법은 다음과 같이 두 가지이다. 채팅방을 나간 후, 새로운 닉네임으로 다시 들어간다. 채팅방에.. 2022. 3. 22.
[프로그래머스] 문자열압축 문자열압축 개요 - 기본적인 구현 문제로 문제를 분석하고 해결 방안에 대한 순서를 잘 세운다면 어렵지않게 문제를 해결할 수 있다. 문제 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다. 간단한 예로 "aabbaccc"의 경우 "2a2ba3c"(문자가 반복되지 않아 한번만 나타난 경우 1은 생략함)와 같이 표현할 수 있는데, 이러한 방식은 반복되는 문자가 적은 경우 압축률이 낮다는 단점이 있습니다. 예를 들면, "abcab.. 2022. 3. 21.
[백준]1504. 특정한 최단 경로 1504. 특정한 최단 경로 개요 - 이 문제는 가중치가 있는 그래프의 최소 경로를 찾는 문제로 다익스트라 알고리즘을 이용하는 문제이다. - 다만 특이하게 반드시 거쳐야할 정점의 번호가 주어진다. 어렵게 생각하지않고 각 정점을 들르면서 목적지까지 갈 경로들의 가중치 중에서 최소값을 구하는 방법으로 문제를 해결했다. 문제 방향성이 없는 그래프가 주어진다. 세준이는 1번 정점에서 N번 정점으로 최단 거리로 이동하려고 한다. 또한 세준이는 두 가지 조건을 만족하면서 이동하는 특정한 최단 경로를 구하고 싶은데, 그것은 바로 임의로 주어진 두 정점은 반드시 통과해야 한다는 것이다. 세준이는 한번 이동했던 정점은 물론, 한번 이동했던 간선도 다시 이동할 수 있다. 하지만 반드시 최단 경로로 이동해야 한다는 사실에 .. 2022. 3. 18.
[백준]13549. 숨바꼭질3 13549. 숨바꼭질3 개요 - 이 문제는 가중치가 있는 그래프의 최소 경로를 찾는 문제로 다익스트라 알고리즘을 이용하여 해결했다. - 우선순위 큐를 사용해서 알고리즘을 구현했고, 이 과정에서 Comparable Interface를 활용하는 방법을 공부했다. 문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 0초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후.. 2022. 3. 17.
[Linux] iconv 명령어 iconv 명령어 개요 - 파일의 문자 형식을 변환할 수 있는 명령어를 알아본다. iconv - 파일의 문자 형식을 다른 문자 형식으로 변환한다. Format - iconv [–cs] [–M|–T] –f oldset –t newset [file …file …] - iconv [–cs] [–M|–T] –F [-f oldset] –t newset [file …file …] - conv –l [–v] 주요 Options - c : 변환 에러를 포함한 문자는 결과에 쓰지 않는다. 기본적으로 소스 문자 형식으로 있지 않은 문자들은 0xff로 변환하여 쓴다. - f oldset : 파일의 현재 문자 형식을 지정한다. - l : 지원하는 문자 형식을 출력한다. - s: 에러메시지를 출력하지 않는다. - t newse.. 2022. 3. 17.
[기본 개념] 다익스트라 알고리즘(Dijkstra Algorithm) 다익스트라 알고리즘(Dijkstra Algorithm) 개요 - 최소 경로를 찾는 다익스트라 알고리즘의 개념을 알아본다. - 사용하는 경우와 사용하지 못하는 경우를 알아보고, 최소 경로 결과를 도출하는 과정을 살펴본다. 기본 개념 - 그래프의 간선에 가중치가 주어졌을때 출발 노드에서 목적지 노드까지 도달하는 최소비용을 찾는 알고리즘이다. - 다익스트라 알고리즘을 이용하면 출발지에서 모든 노드까지의 최소 도달 비용을 알 수 있다. 따라서 목적지까지의 최소비용도 함께 알 수 있다. - 다음은 다익스트라 알고리즘으로 최소 비용을 찾는 과정이다. 최소 비용을 찾는 과정( 다익스트라 알고리즘 이용 ) 0. 모든 노드의 최소 가중치를 찾기 위해서 다음과 같이 세 변수가 필요하다. - 각 노드의 방문 여부 (모든 노.. 2022. 3. 12.