코딩테스트/프로그래머스
프로그래머스 - 문자열 압축 Swift(구현)
https://school.programmers.co.kr/learn/courses/30/lessons/60057 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 및 소스코드 입력은 최대 1000이니 시간복잡도는.. 그냥 잘라나가며 압축하고 개수를 세면 된다. import Foundation //문자열을 자르는 함수 func slice(_ n: Int, _ input: String) -> [String]{ var result = [String]() var tmp = "" for char in input{ tmp += String(char) //tmp가..
프로그래머스 - 거리두기 확인하기 Swift(구현)
https://school.programmers.co.kr/learn/courses/30/lessons/81302 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 및 소스코드 허드슨 거리가 2라면 조건은 해선 안되는 포지션은 아래와 같다 행이 같을경우 POP -> 탈락 열이 같을 경우 P O P -> 탈락 행과 열이 다를경우(대각선인경우) P? ?P -> ?가 하나라도 O일경우 탈락 1차원 String배열로 1개의 맵이 주어지기 때문에 이를 2차원 배열로 바꿔줘야한다. 1개의 1차원배열에 대하여 2차원 Character배열로 바꾼다. for place..
프로그래머스 - 택배상자 Swift (스택, 구현)
https://school.programmers.co.kr/learn/courses/30/lessons/131704 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 및 소스코드 보조 컨베이어 벨트는 뒤에서만 뺄 수 있으므로 대놓고 스택문제다. 배열로 스택을 구현하고 아래의 설명처럼 구현하면 된다. import Foundation func solution(_ order:[Int]) -> Int { var target = 0 var stack = [Int]() var truck = [Int]() //상자는 1부터 order의 갯수만큼 들어온다. for n..
프로그래머스 - 가장 큰 정사각형 Swift(DP)
https://school.programmers.co.kr/learn/courses/30/lessons/12905?language=swift 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 및 소스코드 DP문제. 1, 1에서부터 비교를 시작해나간다. [x][y], [x-1][y], [x][y-1], [x-1][y-1] 중 가장 작은것에 1을 더해나간다. 이유는 한 번만 코드를 따라가봐도 알게됨.. 1, 1에서 시작하므로 [[1, 0], [0, 0]]의 경우 정답은 1인데 0이 출력될것이다. 그러므로 초기값은 board[0]의 max로 해두자. impo..
프로그래머스 - 두 큐 합 같게 만들기 Swift
https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 및 소스코드 만들어야 하는 sum의 값은 (queue1 + queue2) / 2 만약 (queue1 + queue2) % 2 != 0, 즉 홀수라면 각 배열에 0.5씩 있어야 하므로 정수 배열에선 만들 수 없다. 배열을 하나로 두고, 좌 우 포인터를 이용한다. 초기의 queue1의 sum 값을 갖고 시작하게 되는데, 만약 sum < target 이라면 right을 1증가시키키고 sum에 더..
프로그래머스 - 롤케이크 자르기Swift
https://school.programmers.co.kr/learn/courses/30/lessons/132265 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 및 소스코드 1 ≤ topping의 길이 ≤ 1,000,000이다. 문자열을 배열로 잘라서 크기를 count해나간다..면 시간이초과가 뜰 것 같다. 처음엔 한쪽에 케이크를 몰아주고 하나씩 옮겨 나가는 식으로 풀어야 한다.(✧ㅏ 닐수도..?) 딕셔너리를 생성해 일단 개수와 토핑을 count 한다. [1, 2, 1, 3, 1, 4, 1, 2] 라면 처음엔 형 = [1: 4, 2: 2, 3: 1..
프로그래머스 - [카카오 인턴] 수식 최대화Swift (DFS, 구현)
https://school.programmers.co.kr/learn/courses/30/lessons/67257 풀이 및 소스코드 원래의 우선순위는 당연히 *, / -> -+이다 식은 그대로 두고, 이 우선순위를 바꿔가며 계산을 해나가는데 +를 먼저하냐, *를 먼저하냐, -를 먼저하냐의 문제. DFS까진 사용할 필요 없지만 DFS으로 *-+의 순열을 만들어서 순열이 만들어 지면 앞에있는 순서대로 우선순위를 정해 계산해 나갔다. oprator는 3종류다 따라서 3번 반복하게 될거고, op의 순서마다 배열에서 op가 사라질 때 까지 반복해나간다. idx 에 op가 위치한다면 (idx-1...idx+1) 의 위치를 (idx-1 op idx+1)로 변경해주었다. exp.replaceSubrange(i-1.....
프로그래머스 - [3차] 방금그곡 Swift(치환, 정렬, 구현)
방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. 그럴 때 네오는 다음 포털의 '방금그곡' 서비스를 이용하곤 한다. 방금그곡에서는 TV, 라디오 등에서 나온 음악에 관해 제목 등의 정보를 제공하는 서비스이다. 네오는 자신이 기억한 멜로디를 가지고 방금그곡을 이용해 음악을 찾는다. 그런데 라디오 방송에서는 한 음악을 반복해서 재생할 때도 있어서 네오가 기억하고 있는 멜로디는 음악 끝부분과 처음 부분이 이어서 재생된 멜로디일 수도 있다. 반대로, 한 음악을 중간에 끊을 경우 원본 음악에는 네오가 기억한 멜로디가 들어있다 해도 그 곡이 네오가 들은 곡이 아닐 수도 있다. 그렇기 때문에 네오는 기억한 멜로디를 재생 시간과 제공된 악보를 직접 보면서 비교하려고 ..
프로그래머스 - 괄호 변환 Swift(재귀)
괄호 변환 문제 설명 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴파일하여 로그를 보니 대부분 소스 코드 내 작성된 괄호가 개수는 맞지만 짝이 맞지 않은 형태로 작성되어 오류가 나는 것을 알게 되었습니다. 수정해야 할 소스 파일이 너무 많아서 고민하던 "콘"은 소스 코드에 작성된 모든 괄호를 뽑아서 올바른 순서대로 배치된 괄호 문자열을 알려주는 프로그램을 다음과 같이 개발하려고 합니다. 용어의 정의 '(' 와 ')' 로만 이루어진 문자열이 있을 경우, '(' 의 개수와 ')' 의 개수가 같다면 이를 균형잡힌 괄호 문자열이라고 부릅니다. 그리고 여기에 '('와 ')'의..
프로그래머스 - 메뉴 리뉴얼 Swift(조합, 재귀)
메뉴 리뉴얼 문제 설명 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 새로운 메뉴를 제공하기로 결정했습니다. 어떤 단품메뉴들을 조합해서 코스요리 메뉴로 구성하면 좋을 지 고민하던 "스카피"는 이전에 각 손님들이 주문할 때 가장 많이 함께 주문한 단품메뉴들을 코스요리 메뉴로 구성하기로 했습니다. 단, 코스요리 메뉴는 최소 2가지 이상의 단품메뉴로 구성하려고 합니다. 또한, 최소 2명 이상의 손님으로부터 주문된 단품메뉴 조합에 대해서만 코스요리 메뉴 후보에 포함하기로 했습니다. 예를 들어, 손님 6명이 주문한 단품메뉴들의 조합이 다음과 같다면, (각 손님은 단품메뉴를 2개 이..