구현
[프로그래머스] 거리두기 확인하기
문제 출처 [프로그래머스] 2021 카카오 채용연계형 인턴십 - 거리두기 확인하기 풀이 거리두기의 규칙이 정해지고 그 규칙에 지키지 않은 대기실은 0을 규칙을 잘 지킨 대기실은 1을 출력하여 5개의 대기실에 대해 배열을 반환하는 문제였습니다. 1. 대기실의 모든 영역을 돌아주면서(5 x 5 = 25) P를 찾아준다. 2. 현재 P를 기준으로 오른쪽 부분에 멘헤튼 거리를 지키지 않은 P가 존재하는지 확인한다. m값이 더 작은 P들은 검사해줄 필요가 없겠다는 생각이 들어 오른쪽 부분만 검사해주었다. 오른쪽 부분만 검사해주었다는 부분이 직관적이지 않게 들릴 수 있지만, 현재 n을 기준으로 n부터 시작해서 오른쪽 부분의 distance가 2가 넘지 않는 부분들을 검사해주었다. 3. 1번째 탐색 때는 빨간 원을 ..
[프로그래머스] 기능개발
문제 출처 [프로그래머스] 스택/큐 - 기능개발 풀이 작업이 어느 진도까지 진행됬는지를 보여주는 progresses배열과 각 작업속도를 알려주는 speeds배열이 주어집니다. 작업은 전체 100%까지 진행되고 가장 먼저 끝내야하는 우선순위가 높은 작업 순서로 정렬되어 제공됩니다. 우선순위가 높은 순서부터 작업을 배포해야하기 때문에 뒤의 작업들은 앞의 우선순위가 높은 작업이 완료되기 전까지는 배포가 불가능합니다. 그리고 이미 마무리되어 있던 뒤의 작업은 앞의 작업과 함께 배포될 수 있습니다. 간단히 생각해서 우선순위가 높은 작업이 끝나는 날짜를 구한 뒤, 해당 날짜보다 작업의 마무리 일이 늦은 작업전까지는 모두 함께 배포할 수 있습니다. 따라서 progresses배열의 앞에서부터 작업이 끝나는 날짜를 구해..
[BOJ] 17359 - 전구 길만 걷자
문제 출처 [BOJ] 17359 - 전구 길만 걷자 풀이 전구 묶음을 적절히 이어 전구 상태가 바뀌는 횟수를 최소로 하는 것을 목표로 하는 문제였습니다. N이 10으로 10!이어도 시간이 충분하기 때문에 전구 묶음의 배치는 완전 탐색으로 구성하면 됩니다. 하지만 완전 탐색을 돌릴때 묶음의 조합이 완성되어 이어진 묶음에서 전구 상태가 몇번 바뀌는지 매번 확인하게 되면 시간초과가 납니다. 각 전기 묶음의 전구 상태가 몇번 바뀌는지 미리 저장해놓고 각 전기 묶음이 이어지는 부분에서 전구의 상태가 바뀌는지만 확인해주어 시간초과를 해결할 수 있습니다. 코드 small-j/Algorithm Contribute to small-j/Algorithm development by creating an account on ..
[BOJ] 14654 - 스테판 쿼리
문제 출처 [BOJ] 14654 - 스테판 쿼리 풀이 매 경기의 결과를 비교해주어 연승의 횟수를 세서 많은 연승의 수를 출력하면 되는 간단한 구현 문제였습니다. 모든 경기마다 첫 번째 팀이 이겼는지, 두 번째 팀이 이겼는지 확인하여 이긴 팀의 승의 횟수를 올려주고 진 팀의 승의 횟수를 0으로 만들어주었습니다. 그리고 매번 가장 큰 값을 갱신해주어 가장 많은 연승 횟수를 구해주면 됩니다. 여기서 주의 할 점은 누가 승자인지 확인해주는 부분을 예외가 없도록 잘 짜주어야 한다는 것입니다. 저는 따로 game이라는 함수를 만들어서 첫 번째 팀이 이길경우 1 반환, 두 번째 팀이 이길경우 2 반환, 비길경우 3을 반환해주었습니다. 코드 small-j/Algorithm Contribute to small-j/Alg..
[BOJ] 9519 - 졸려
문제 출처 [BOJ] 9519 - 졸려 풀이 눈을 깜빡인 횟수를 모두 돌아주어 문자열의 상태를 알아낸다면 시간초과가 날 것입니다. 그래서 다른 방법을 찾아야 합니다. 문제의 문자열이 바뀌는 규칙대로 쭉 써보다보면 규칙을 찾을 수 있습니다. 위의 사진과 같이 원래의 문자열로 돌아오는 주기가 있고 위의 예제는 5번 눈을 깜빡이면 다시 원래의 상태로 돌아오게 됩니다. 그렇다면 X를 주기만큼 나눈 나머지 값만큼 문자열을 바꿔준다면 정답을 구할 수 있습니다. 이 때 나머지 값만큼 문자열을 바꿔줄때는 정해진 규칙의 반대로 문자열을 바꿔주어야 눈을 깜빡이기 전 원래의 문자열을 찾을 수 있습니다. 코드 small-j/Algorithm Contribute to small-j/Algorithm development by ..
[BOJ] 8979 - 올림픽
문제 출처 [BOJ] 8979 - 올림픽 풀이 문제에서 입력받은 국가의 등수만을 알아내면 되기 때문에 알아낼 국가보다 높은 등수를 가진 국가를 세줘야겠다고 생각했습니다. g, s, b라는 변수에 각각 내가 등수를 찾아야 할 국가의 금메달 수, 은메달 수, 동메달 수를 저장해주었습니다. 그리고 모든 국가를 한번씩 봐주면서 cnt를 늘려준 경우는 다음과 같습니다. 1. 금메달 수가 g변수보다 큰 경우 2. 금메달 수가 같으면서 은메달 수가 s변수보다 큰 경우 3. 금메달, 은메달 수가 같으면서 동메달 수가 b변수보다 큰 경우 이 세가지 경우에만 나보다 높은 등수를 가진 국가들이기에 이 국가들을 세주고 그 뒤 등수가 정답이 됩니다. 코드 small-j/Algorithm Contribute to small-j/..
[BOJ] 15898 - 피아의 아틀리에 ~신비한 대회의 연금술사~
문제 출처 백준 15898 - 피아의 아틀리에 ~신비한 대회의 연금술사~ 풀이 연금술사 피아가 3개의 재료(4×4 형태)를 적절히 선택하고 배치하여 가마(5×5 격자 모양)에 넣어 만들 수 있는 최대 품질의 폭탄을 만드는 문제였습니다. 품질은 원소와 효능을 합해 구해주어야 합니다. 원소는 R, B, G, Y, W가 있었는데, W인 경우는 아무런 점수도 얻을 수 없고 나머지 품질의 경우는 각 원소별로 효능을 모두 더해 품질 = 7R + 5B + 3G + 2Y 이처럼 곱해주는 작업을 통해 품질을 구해줍니다. 우선 3개의 재료를 고르는 경우는 완탐을 통해 모든 순열의 경우의 수를 고려해주었습니다. 재료를 돌리거나 위치를 다르게 넣어주는 등 재료가 가마에 들어가는 16가지 경우를 모두 배열로 만들어 16 × 1..