알고리즘 38

프로그래머스 - 미로탈출

최대한 빠르게 미로를 탈출하는데 걸리는 시간을 구해야한다.즉 최단거리를 구하는 문제라서 나는 bfs 를 선택했다. 주의해야할점은 출구를 지나쳐 지나갈 수 있지만 레버를 당기고 와야 출구가 열리기 때문에레버를 먼저 갔다와야만 탈출을 할 수 있다. 여기서 아이디어가 하나 나오는데 bfs를 두번 사용하는것이다.레버까지 도달하는데 걸리는 최단거리와레버에서 출구까지 도달하는 최단거리를 각각 구하고 합쳐주는것이다. 검색하지 않고 스스로 풀어낸 bfs 풀이라 꽤나 뿌듯하다.import java.util.*class Solution { var dx = listOf(-1,1,0,0) var dy = listOf(0,0,-1,1) var n = 0 var m = 0 var checkLaver..

알고리즘 2024.08.12

프로그래머스 - 카드뭉치

goal 에 있는 내용들을 card1 과 card2 에 있는지 각각 index를 늘려가며 순서대로 찾아보고찾을때마다 complete 라는 값의 카운트를 증가시켜준다.모든 작업을 완료하고나서 goal 의 사이즈와 complete의 카운트가 같다면 조건에 맞게 문자열을 만들 수 있다는것이 된다. class Solution { fun solution(cards1: Array, cards2: Array, goal: Array): String { var answer: String = "" var card1Index = 0 var card2Index = 0 var complete = 0 goal.forEach{ i..

알고리즘 2024.08.12

프로그래머스 - 대충 만든 자판

여러번을 눌러도 결국 필요한건 가장 적게 누르고 어떤 문자를 만들 수 있다는 정보가 가장 중요하다.그래서 map 에다가 이미 저장된 key가 있다면 어떤게 더 적게 만들 수 있는 상황인지 체크해서 다시 저장해준다. 그리고 뒤에 헷갈렸던 부분은 여러문자열중 하나만이라도 만들 수 없다면 기존의 count 는 다 무시되고 -1 로 만들어줘야한다. 이 부분을 빠뜨려서 헤맸다.import java.util.*class Solution { fun solution(keymap: Array, targets: Array): IntArray { var answer = mutableListOf() var map = mutableListOf>() var count = mutableM..

알고리즘 2024.08.11

프로그래머스 - 신고 결과 받기

https://programmers.co.kr/learn/courses/30/lessons/92334?language=java 코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr import java.util.*; class Solution { public int[] solution(String[] id_list, String[] report, int k) { //한 사람이 여러번 똑같은 사람을 신고하는건 의미가 없으므로 distinct로 중복을 다 제거한다. report = Arrays.stream(re..

알고리즘 2022.03.21

1이 될때까지 최소 연산 횟수

n과 k 라는 자연수가 주어진다고 하면 아래 두가지 연산 중 하나씩 진행하여 n이 1이 되도록 하는데 연산 횟수를 최소화 하는 알고리즘을 작성하라. 1. n 에서 1을 빼기 2. n 에서 k를 나누기 이런 문제가 있다고 하자. 이 문제는 그리디 알고리즘의 유명한 문제다. 해설을 보기전 나의 경우는 n = 25 k = 5 count = 0 while 1 : if n%k ==0: n=n/k count+=1 else : count+=1 n= n-1 if n==1 : break print(count) 이런 식으로 풀었다. 이 방법도 틀린 방법은 아니지만 주어지는 숫자의 범위가 커지면 문제가 생길 수 있다. 그래서 사용하는 테크닉이 해설 코드에 있었다. n = 17 k = 4 count = 0 while 1 : ..

알고리즘 2021.08.21