코딩테스트
[코딩테스트] - 격자판 회문수(Swift)
격자판 회문수 1부터 9까지의 자연수로 채워진 7*7 격자판이 주어지면 격자판 위에서 가로방향 또는 세로방향으로 길이 5자리 회문수가 몇 개 있는지 구하는 프로그램을 작성하세요. 회문수란 121과 같이 앞에서부터 읽으나 뒤에서부터 읽으나 같은 수를 말합니다. 빨간색처럼 구부러진 경우(87178)는 회문수로 간주하지 않습니다. ▣ 입력설명 1부터 9까지의 자연수로 채워진 7*7격자판이 주어집니다. ▣ 출력설명 5자리 회문수의 개수를 출력합니다. ▣ 입력예제 1 2 4 1 5 3 2 6 3 5 1 8 7 1 7 8 3 2 7 1 3 8 6 1 2 3 2 1 1 1 3 1 3 5 3 2 1 1 2 5 6 5 2 1 2 2 2 2 1 5 ▣ 출력예제 1 3 풀이 및 소스코드 var grid = [[Int]]()..
카드 역배치
카드 역배치(정올 기출) 1부터 20까지 숫자가 하나씩 쓰인 20장의 카드가 아래 그림과 같이 오름차순으로 한 줄로 놓 여있다. 각 카드의 위치는 카드 위에 적힌 숫자와 같이 1부터 20까지로 나타낸다. 이제 여러분은 다음과 같은 규칙으로 카드의 위치를 바꾼다: 구간 [a, b] (단, 1 ≤ a ≤ b ≤ 20)가 주어지면 위치 a부터 위치 b까지의 카드를 현재의 역순으로 놓는다. 예를 들어, 현재 카드가 놓인 순서가 위의 그림과 같고 구간이 [5, 10]으로 주어진다면, 위치 5부터 위치 10까지의 카드 5, 6, 7, 8, 9, 10을 역순으로 하여 10, 9, 8, 7, 6, 5로 놓는다. 이제 전체 카드가 놓인 순서는 아래 그림과 같다. 이 상태에서 구간 [9, 13]이 다시 주어진다면, 위치 ..
프로그래머스 - 문자열 압축 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, 라디오 등에서 나온 음악에 관해 제목 등의 정보를 제공하는 서비스이다. 네오는 자신이 기억한 멜로디를 가지고 방금그곡을 이용해 음악을 찾는다. 그런데 라디오 방송에서는 한 음악을 반복해서 재생할 때도 있어서 네오가 기억하고 있는 멜로디는 음악 끝부분과 처음 부분이 이어서 재생된 멜로디일 수도 있다. 반대로, 한 음악을 중간에 끊을 경우 원본 음악에는 네오가 기억한 멜로디가 들어있다 해도 그 곡이 네오가 들은 곡이 아닐 수도 있다. 그렇기 때문에 네오는 기억한 멜로디를 재생 시간과 제공된 악보를 직접 보면서 비교하려고 ..