문제 https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 풀이 간단한 백트래킹 문제였다. 모든 경우를 찾아준 뒤에 암호의 길이와 동일한 배열이 완성되면, 조건을 만족하는지 확인해주었다. 나는 아래처럼 해결했지만 자음을 굳이 선언하지 않고 vowel에 포함되는지 확인하여 자음과 모음을 분리할 수 있을 것이다. 이렇게하면 메모리를 조금이나마 줄일 수 있을 것 같다. import Foundation let input = readLine()!.split(sep..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/92342 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 이 문제를 풀어보면서 정말 많이 모자라다고 느꼈음. 모든 경우의 수를 구할 때 점수를 얻었을 때와 못얻었을때로 나눠서 생각했어야했는데 처음엔 못했었음. 아무튼 이 문제는 dfs를 이용해서 해결했는데, 라이언이 이길 수 있는 모든 경우의 수를 구한 뒤에 가장 큰 점수차를 갖는 것 중에서 낮은 점수를 맞춘 화살 수가 더 많은 것을 리턴해주었음. 우선 처음에 apeach라는 변수에 라이언이 ..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 swift에는 Queue 자료구조가 없고, 이용하기 위해서는 직접 만들어야한다. 두 개의 배열을 이용해서 구현할 수도 있지만, 나는 큐에서 원소를 제거하지않고 포인터와 append만을 이용하였다. 일단 원소의 합이 더 큰 큐에서 원소를 옮겨야한다는 것은 당연하다. 그래서 합이 더 큰 큐의 앞 원소를 다른 큐에 append해주어야한다. 예를 들어, 첫 번째 큐에서 두 번째 큐로 원소를 ..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/150365 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 처음에 BFS로 풀었는데 시간초과가 나왔다. 이 문제에서는 사전순으로 가장 빠른 경로를 출력해야한다. 그렇기때문에 BFS로 푼다면 가장 빠른 d를 우선으로 탐색하는 것이 아닌, d r l u 골고루 탐색하게되어 불필요한 연산을 하게된다. 그래서 이 문제는 DFS로 풀어야한다. 기존에 BFS를 이용할때는 queue를 이용하여 removeFirst()로 앞에것부터 빼주면서 돌렸었다. 하지..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/150368 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 효율적으로 계산하는 방법이 있는지 고민을 했었다. 근데 emoticons의 길이가 최대 7이라는 점에서 완전탐색을 이용해도 되겠다는 생각을 했다. 할인율은 총 네 가지 경우만 존재하므로 최대 유저가 100명이어도 해볼만하다고 생각했다. 그래서 재귀를 이용해 우선 모든 할인율 케이스를 미리 구해주었다. 그리고 매 경우별로 직접 계산해서 결과를 출력하였다. import Foundation..
- Total
- Today
- Yesterday