ALGORITHM/Swift(97)
-
[알고리즘] Swift -프로그래머스 연습문제 #181188(요격 시스템)
문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/181188 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 A나라가 B나라를 침공했습니다. B나라의 대부분의 전략 자원은 아이기스 군사 기지에 집중되어 있기 때문에 A나라는 B나라의 아이기스 군사 기지에 융단 폭격을 가했습니다. A나라의 공격에 대항하여 아이기스 군사 기지에서는 무수히 쏟아지는 폭격 미사일들을 요격하려고 합니다. 이곳에는 백발백중을자랑하는 요격 시스템이 있지만 운용 비용이 상당하기 때문에 미사일을 최소로 사용해서 모든 폭격..
2024.04.05 -
[알고리즘] Swift -프로그래머스 연습문제 #136798(기사단원의 무기)
문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/136798 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 숫자나라 기사단의 각 기사에게는 1번부터 number까지의 번호가 지정되어 있다 기사들은 무기점에서 무기를 구매하려고 한다. 각 기사는 자신의 기사 번호의 약수 개수에 해당하는 공격력을 가진 무기를 구매하려한다. 단 이웃나라와의 협약에 의해 공격력의 제한수치를 정하고, 제한수치보다 큰 공격력을 가진 무기를 구매해야 하는 기사는 협약기관에서 정한 공격력을 가지는 무기를 구매해야 한다..
2024.04.03 -
[알고리즘] Swift -프로그래머스 연습문제 #138477(명예의 전당 1)
문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/138477?language=swift 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 명예의 전당이라는 티비에서 매일 1명의 가수가 노래를 부르고 시청자들의 문자투표로 가수에게 점수를 부여한다. 매일 출연한 가수의 점수가 지금까지 출연 가수들의 점수 중 상위 k번째 이내이면 해당 가수의 점수를 명예의 전당이라는 목록에 올려 기념한다. 즉 프로그램이 시작 이후 초기에 k일까지는 모든 출연 가수의 점수가 명예의 전당에 오르게 된다. k일 다음..
2024.04.03 -
[알고리즘] Swift -프로그래머스 연습문제 #86971(전력망을 둘로 나누기) -BFS
문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/86971 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 송전탑이 전선을 통해 하나의 트리 형태로 연결 당신은 이 전선들 중 하나를 끊어서 현재 전력망 네트워크 2개로 분할하려고 한다 이 때 두 전력망이 갖게 되는 송전탑의 개수를 최대한 비슷하게 맞추고자 한다 송전탑의 개수 n 그리고 전선 정보 wires가 매개변수로 주어질 때 전선들 중 하나를 끊어서 송전탑 개수가 가능한 비슷하도록 두 전력망으로 나누었을 때 두 전력망이 가지고 있는 송..
2023.11.18 -
[알고리즘] Swift -프로그래머스 연습문제 #43163(단어 변환)
문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 begin target과 단어의 집합 words가 있을 때 규칙을 이용하여 begin->target으로 변환하는 가장 짧은 변환 과정을 찾는다 1. 한번에 한개의 알파벳만 바꿀 수 있다. 2. words에 있는 단어로만 변환할 수 있다. begin: hit / target: cog words: [hot, dot, dog, lot, log, cog] hit hot dot dog cog..
2023.11.09 -
[알고리즘] Swift -프로그래머스 연습문제 #43162(네트워크)
문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 컴퓨터 에이와 비가 직접적으로 연결되어있고 비와 씨가 직접적으로 연결되어있을 때 에이와 씨도 간접적으로 연결되어 정보를 교환할 수 있다 컴퓨터의 수 n 연결에 대한 정보가 담긴 2차원배열이 주어질 때 네트워크의 개수구하기 풀이 func solution(_ n:Int, _ computers:[[Int]]) -> Int { var count: Int = 0 var check = Arra..
2023.11.09 -
[알고리즘] Swift -백준 #4963(섬의 개수)
문제링크 https://www.acmicpc.net/problem/4963 4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net 분석 섬의 개수를 세는 프로그램 한 정사각형과 가로 세로 대각선으로 연결되어 있는 사각형은 걸어갈 수 있는 사각형이다 두 정사각형이 같은 섬에 있으려면 한 정사각형에서 다른 정사각형으로 걸어서 갈 수 있는 경로가 있어야한다 지도 밖으로 나갈 수 없다 여러개의 테스트케이스로 이루어져있음 너비w, 높이h 둘째줄부터 h개 줄에는 지도 (1은 땅, 0은 바다) 마지막 입력은 0 0 풀이 i..
2023.11.08 -
[알고리즘] Swift -프로그래머스 연습문제 #86051(없는 숫자 더하기)
문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/86051 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 import Foundation func solution(_ numbers:[Int]) -> Int { var sum = 45 for i in numbers { sum -= i } return sum }
2023.06.27 -
[알고리즘] Swift -프로그래머스 연습문제 #12912(두 정수 사이의 합)
문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/12912 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 func solution(_ a:Int, _ b:Int) -> Int { var result = 0 if a == b { return a } var first = a b ? a : b for i in first...second { result += i } return result }
2023.06.27 -
[알고리즘] Swift -프로그래머스 연습문제 #181916(주사위 게임 3)
문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/181916 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 1부터 6까지 숫자가 적힌 주사위 4개가 있다. 4 주사위를 굴렸을 때 나온 숫자에 따라 다음과 같은 점수를 얻습니다. 4 주사위에서 나온 숫자가 모든 p로 같다면 1111xp 점을 얻는다. 3 주사위에서 나온 숫자가 p로 같고 나머지 다른 주사위에서 나온 숫자가 q(p ≠ q)라면 (10 × p + q)2 점을 얻는다. 주사위가 2개씩 같은 값이 나오고 나온 숫자를 p, q(p ..
2023.06.08 -
[알고리즘] Swift -프로그래머스 연습문제 #181893(배열 조각하기)
문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/181893 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 정수배열 arr 와 query 가 주어진다. query 를 순회하면서 다음 작업을 반복한다. 짝수 인덱스에서는 arr에서 query[i]번 인덱스를 제외하고 배열의 query[i]번 인덱스 뒷부분을 잘라서 버린다. 홀수 인덱스에서는 arr에서 query[i]번 인덱스를 제외하고 배열의 query[i]번 인덱스 앞부분을 잘라서 버린다. 위 작업을 마친 arr의 부분 배열을 리턴하는 ..
2023.06.07 -
[알고리즘] Swift -프로그래머스 연습문제 #133502(햄버거 만들기)
문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/133502 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 함께 일을 하는 다른 직원들이 햄버거에 들어갈 재료를 조리해 주면 조리된 순서대로 상수의 앞에 아래서부터 위로 쌓이게 되고, 상수는 순서에 맞게 쌓여서 완성된 햄버거를 따로 옮겨 포장을 하게 된다. 상수가 일하는 가게는 정해진 순서(아래부터, 빵-야채-고기-빵)으로 쌓인 햄버거만 포장을 한다. 상수는 손이 빠르기 때문에 포장하는 동안 속 재료가 추가적으로 들어오는 일은 없다. 재료..
2023.06.07 -
[알고리즘] Swift -프로그래머스 연습문제 #181832(정수를 나선형으로 배치하기)
문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/181832 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 양의 정수 n이 주어질 때 n * n배열에서 1부터 n의 제곱까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원배열을 리턴하는 문제이다. 풀이 과정 n=4일때, 4 * 4 = 16 1부터 16까지의 수를 나선형으로 입력한 표이다. 출력값이 [[1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [10, 9, 8, 7]] 이다. 0으..
2023.05.30 -
[알고리즘] Swift -프로그래머스 연습문제 #178871(달리기 경주)
문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/178871 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 해설진은 선수들이 자기 바로 앞의 선수를 추월할 때 추월한 선수의 이름을 부른다. 예를 들어 1등부터 3등까지 mumu, soe, poe 선수들이 순서대로 달리고 있을 때 해설진이 seo 선수를 불렀다면 1등인 mumu 선수를 추월했다는 뜻이다. 즉 seo 선수가 1등, mumu 선수가 2등으로 바뀐다. 선수들의 이름이 1등부터 현재 등수 순서대로 담긴 배열과 해설진이 부른 이름이..
2023.05.30 -
[알고리즘] Swift -프로그래머스 연습문제 #140108(문자열 나누기)
문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/140108 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 문자열 s가 입력되었을 때 다음 규칙을 따라서 이 문자열을 여러 문자열로 분해하려고 한다. 먼저 첫 글자를 읽는다. 이를 x라고 가정한다. 이제 문자열을 왼쪽에서 오른쪽으로 읽어나가면서 x와 x가 아닌 다른 글자들이 나온 횟수를 각각 센다. 처음으로 두 횟수가 같아지는 순간 멈추고, 지금까지 읽은 문자열을 분리한다. s에서 분리한 문자열을 빼고 남은 부분에 대해서 이 과정을 반복한..
2023.05.28 -
[알고리즘] Swift -프로그래머스 연습문제 #92334(2022 카카오 블라인드_신고 결과 받기)
문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/92334 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 한다. 각 유저는 1번에 1명의 유저를 신고할 수 있다. 신고 횟수는 제한이 없다. 서로 다른 유저를 계속 신고할 수 있다. 한 유저를 여러 번 신고할 수 있지만 동일한 유저에 대한 신고 횟수를 1회로 처리된다. k번 이상 신고된 유저는 게시판 이용이 정지되며 해당 유저를 신고한 모든 유저에게 정지 사실을 ..
2023.05.28 -
[알고리즘] Swift -프로그래머스 연습문제 #181835(조건에 맞게 수열 변환하기 3)
문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/181835 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 정수 배열 arr 과 k가 주어질 때 k가 홀수하면 arr의 모든 원소에 k를 곱하고 k가 짝수라면 arr의 모든 원소에 k를 더한다. 이러한 변환을 마친 후의 결과를 리턴하는 문제이다. 풀이 import Foundation func solution(_ arr:[Int], _ k:Int) -> [Int] { return k % 2 == 0 ? arr.map { $0 + k } : ..
2023.05.25 -
[알고리즘] Swift -프로그래머스 연습문제 #181881(조건에 맞게 수열 변환하기 2)
문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/181881 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 arr 배열이 주어질 때 원소에 대해 값이 50보다 크거나 같은 짝수라면 2로 나누고 50보다 작은 홀수라면 2를 곱하고 다시 1을 더한다. 이러한 작업을 x번 반복한 결과인 배열을 arr(x)일 때 arr(x) = arr(x+1)인 x가 항상 존재한다. 이러한 x 중 가장 작은 값을 리턴하는 문제이다. 풀이 import Foundation func solution(_ arr:[I..
2023.05.24 -
[알고리즘] Swift -프로그래머스 연습문제 #181882(조건에 맞게 수열 변환하기 1)
문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/181882 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 정수 배열이 주어질 때 각 원소에 대해 값이 50보다 크거나 같은 짝수라면 2로 나누고 50보다 작은 홀수라면 2를 곱합니다. 풀이 import Foundation func solution(_ arr:[Int]) -> [Int] { return arr.map { if $0 >= 50 && $0 % 2 == 0 { return $0 / 2 } if $0 < 50 && $0 % 2 =..
2023.05.24 -
[알고리즘] Swift -프로그래머스 연습문제 #181873(특정한 문자를 대문자로 바꾸기)
문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/181873 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 영소문자로 이루어진 문자열과 영소문자 1글자로 이루어진 문자열이 주어질 때 1글자에 해당하는 모든 글자를 대문자로 바꾼 문자열을 리턴하는 문제이다. 풀이 과정 alp에 해당하는 단어를 찾아서 대문자로 변경하면 된다. 풀이 import Foundation func solution(_ my_string:String, _ alp:String) -> String { return my_st..
2023.05.24