본문 바로가기

Algorithm123

[Swift][문자열][LV_2][프로그래머스] 영어 끝말잇기 요구능력 : 문자열에 대한 이해 코드설명 : 이 문제에서 핵심 1. 단어 자체가 이전에 나온적이 있는지 확인 2. 바로 이전단어의 끝 문자가 현재단어의 맨 앞문자와 일치하는지 확인 ex) char -> r로 시작해야됨 3. 끝말잇기를 성공한 경우를 확인 변수설명 count = 차례를 계산하기위해 수를 세는 변수 arr = 단어를 arr에 저장하면서 새로운 단어를 저장할 때 그게 앞전에 나온적이 있는지 확인하기 위한 변수 result = 결과를 저장하고 return하기 위함 order = 탈락자가 몇번째 순서인지 세기 위함. 1. 단어 자체가 이전에 나온적이 있는지 확인 contains() 함수를 사용하여 이전에 단어가 나온적이 있는지 확인 하였다. 2. 바로 이전단어의 끝 문자가 현재단어의 맨 앞문자와 .. 2021. 11. 19.
[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][BFS] 백준 1261번 (알고스팟) 요구능력 : BFS에 대한 이해 코드설명 : 이 문제를 푸는 방법은 여러가지가 있겠지만, 저는 BFS에서 가중치를 이용해서 문제를 풀었습니다. 아래는 이 문제에서의 핵심코드입니다.(제가 생각하기에..) arr배열은 입력받은 배열로 1이면 벽, 0이면 뚫려있는공간을 의미합니다. dist배열은 미리 모두 Int.max값으로 초기화 해놨는데, 그 이유는 비교해서 가중치 값을 작은값으로 치환하기 위해서입니다. 아래에서 어떤느낌으로 가중치가 가중되는지 그림으로 그려봤습니다. if arr[nx][ny] == 1{ if dist[nx][ny] > dist[pop.0][pop.1] + 1{ dist[nx][ny] = dist[pop.0][pop.1] + 1 queue.append((nx, ny)) } }else if .. 2021. 11. 15.