본문 바로가기

Algorithm/문제풀이_프로그래머스36

[Swift][문자열][LV2][프로그래머스] 스킬트리 요구능력 : 문자열에 대한 이해 코드설명 : 이 문제의 해답을 보기전에 꿀팁. 이런문제는 사람들마다 문제푸는 스타일이 천차만별일것이라,, 코드해석이 어려울 수 있다. 그럴때는 그냥 혼자서 생각하고 디버깅하면서 푸는게 최고다. 이 문제에서의 핵심을 짚어보자. 1. 문자열을 Character로 분해 2. 배열에서 문자열의 인덱스 활용 3. 선행스킬의 존재여부 변수가 너무 많아서 변수부터.. skillSplit : skill입력을 캐릭터자료형으로 분해해놓은 캐릭터배열 before : 이전에 나온 스킬의 인덱스를 저장한다. isSkill : 스킬트리가 스킬트리로서의 조건들을 만족하는지 안하는지 count : 조건들을 만족하는 스킬트리의 개수 beforeSkill : 이전에 선행으로 배워야하는 스킬 skillTr.. 2021. 11. 18.
[Swift][DFS][LV_2][프로그래머스] 배달 요구능력 : DFS에 대한 이해 코드설명 : 주의: 이 해설은 32번 케이스를 통과하지 못했습니다. DFS로는 도저히 32번을 통과못할것 같지만 풀이가 궁금하신 분들이 계실것같아 올렸습니다. 다음번에 BFS로 풀어보고 따로 글 올리겠습니다. 간선과 가중치가 주어진 문제로 연결그래프를 만들고 그 그래프를 타고가는 방식으로 코드를 짜면된다. 1. 연결그래프 작성 주어진 간선과 가중치를 튜플을 이용해서 연결그래프에 함께 담았다. for i in 0.. k { return } if !visited[i.0]{ visited[i.0] = true count += i.1 if count Int { var visited = Array(repeating: false, count: N + 1) var result = Se.. 2021. 11. 18.
[Swift][DFS][LV_1][프로그래머스] 소수 만들기 요구능력 : 백트래킹에 대한 이해 코드설명 : 풀이는 살펴보니 여러가지 각양각색이다. 나는 N개의 배열에서 3개를 뽑아내서 백트래킹으로 문제를 풀어냈다. 백준의 N과M을 이해하고온다면 문제를 쉽게 풀 수 있다. 1. 3개를 뽑아내기위한 부분 for i in start.. 2021. 11. 6.
[Swift][문자열][LV_1][프로그래머스] 2주차_상호평가 요구능력 : 문자열의 이해 코드설명 : 1. newScore에 따로 넣어준 이유는 한 행에 최대값과 최소값이 1개 초과로 있는지 확인하기 위함이다. 이렇게 한 행에 한 학생의 점수를 넣어줘야 보기도 편리한것같다. 2. i == j는 자기 자신이 채점했을 때를 의미하고, 자기자신이 채점한 인덱스값이 첫번째 최대값 인덱스 값과 같으면 자기자신이 채점한 값이 최대값이라는 의미이다. 여기서 핵심은 자기자신이 채점한 인덱스가 첫번째 최대값 인덱스와 같고, 자기자신이 채점한 인덱스가 마지막 최대값 인덱스와 같으면 유일한 최대값이라는 것이다. 이해가 안갈수도 있으니, 반대의 경우도 적어보자면 자기자신이 채점한 인덱스가 첫번째 최대값 인덱스와 같고, 자기자신이 채점한 인덱스가 마지막 최대값 인덱스와 다르다면 최대값이 .. 2021. 9. 14.