프로그래머스
[프로그래머스] 거리두기 확인하기
문제 출처 [프로그래머스] 2021 카카오 채용연계형 인턴십 - 거리두기 확인하기 풀이 거리두기의 규칙이 정해지고 그 규칙에 지키지 않은 대기실은 0을 규칙을 잘 지킨 대기실은 1을 출력하여 5개의 대기실에 대해 배열을 반환하는 문제였습니다. 1. 대기실의 모든 영역을 돌아주면서(5 x 5 = 25) P를 찾아준다. 2. 현재 P를 기준으로 오른쪽 부분에 멘헤튼 거리를 지키지 않은 P가 존재하는지 확인한다. m값이 더 작은 P들은 검사해줄 필요가 없겠다는 생각이 들어 오른쪽 부분만 검사해주었다. 오른쪽 부분만 검사해주었다는 부분이 직관적이지 않게 들릴 수 있지만, 현재 n을 기준으로 n부터 시작해서 오른쪽 부분의 distance가 2가 넘지 않는 부분들을 검사해주었다. 3. 1번째 탐색 때는 빨간 원을 ..
[프로그래머스] 카카오프렌즈 컬러링북
문제 출처 [프로그래머스] 2017 카카오 코드 예선 - 카카오프렌즈 컬러링북 풀이 1. 주어진 영역 전체를 돌아준다. 2. 색이 칠해져있는 영역에 도달하면 bfs를 돌린다. 3. bfs를 돌면서 유효한 영역(맞닿은 칠해진 영역)만 queue에 추가해준다. 4. 전체 다 돌고나면 하나의 영역 완성 및 영역의 크기 반환하여 최대 영역 찾기 코드 GitHub - small-j/Algorithm Contribute to small-j/Algorithm development by creating an account on GitHub. github.com
[프로그래머스] 오픈채팅방
문제 출처 [프로그래머스] 2019 KAKAO BLIND RECRUITMENT - 오픈채팅방 풀이 오픈채팅방은 카카오톡 채팅방에 유저가 들어가고 나가는 기록을 배열로 받으면 그 기록을 배열로 만들어 반환해주는 문제입니다. 기존에 들어왔던 유저가 닉네임을 바꾸게 되면 이미 채팅방에 기록된 유저의 닉네임을 변경해주어야 했습니다. 기록을 모두 출력해놓고 닉네임이 변경되면 문자열에 접근해서 변경해주는 것은 복잡한 방법이라 생각하여 다른 아이디어를 떠올렸습니다. 닉네임을 Map에 저장하고 이름이 변경되는 기록에 따라 Map의 value를 바꿔주고 마지막에 기록을 한번에 배열로 만들어주었습니다. 아이디는 유일하니까 아이디로 Map에 저장해두자 출력은 가장 마지막에 record를 한번 돌아주면서 -> record를 ..
[프로그래머스] 기능개발
문제 출처 [프로그래머스] 스택/큐 - 기능개발 풀이 작업이 어느 진도까지 진행됬는지를 보여주는 progresses배열과 각 작업속도를 알려주는 speeds배열이 주어집니다. 작업은 전체 100%까지 진행되고 가장 먼저 끝내야하는 우선순위가 높은 작업 순서로 정렬되어 제공됩니다. 우선순위가 높은 순서부터 작업을 배포해야하기 때문에 뒤의 작업들은 앞의 우선순위가 높은 작업이 완료되기 전까지는 배포가 불가능합니다. 그리고 이미 마무리되어 있던 뒤의 작업은 앞의 작업과 함께 배포될 수 있습니다. 간단히 생각해서 우선순위가 높은 작업이 끝나는 날짜를 구한 뒤, 해당 날짜보다 작업의 마무리 일이 늦은 작업전까지는 모두 함께 배포할 수 있습니다. 따라서 progresses배열의 앞에서부터 작업이 끝나는 날짜를 구해..
[프로그래머스] 폰켓몬
문제 출처 [프로그래머스] 찾아라 프로그래밍 마에스터 - 폰켓몬 풀이 주인공은 최대 N/2마리의 폰켓몬을 가질 수 있습니다. 근데 이때 가능한 가장 많은 종류의 폰켓몬을 들고가고 싶어합니다. 우선 폰켓몬의 종류가 담긴 배열을 정렬해주었습니다. 배열을 한번 돌아주면서 종류의 갯수를 세주었습니다. 종류가 만약 N/2보다 적다면 그대로 결과를 반환하고, 많다면 N/2만큼 결과를 반환해주었습니다. 코드 small-j/Algorithm Contribute to small-j/Algorithm development by creating an account on GitHub. github.com