시험이 최대 10,000문제로 구성되어있다 라는 조건이 있어서처음엔 반복문으로 수포자1, 2, 3 배열을 answers 배열 크기랑 동일하게 늘려서 풀었다가생각해보니 늘리는 작업 없이 index로 접근해서 배열 개수로 나눈 나머지로 비교해도 되는거였음..! 나의 풀이import Foundationfunc solution(_ answers:[Int]) -> [Int] { let a1 = [1, 2, 3, 4, 5] let a2 = [2, 1, 2, 3, 2, 4, 2, 5] let a3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5] var dict = [1:0, 2:0, 3:0] for (index, answer) in answers.enumerated() { ..
2018 카카오 블라인드 채용 코테 문제프로그래머스 기준 정답률 59%문제가 좀 길어서 괜히 어렵게 생각했는데 풀다보니 풀만한 문제였음 조건을 간단하게 정리해보면- 다트는 총 3번의 기회- 각 점수는 0~10점- 다트는 S, D, T 영역이 존재하고 각 영역은 1제곱, 2제곱, 3제곱 점수- 옵션으로 스타상(*), 아차상(#)이 있음- 스타상(*)은 현재 점수와 이전 점수를 각각 2배! (만일 첫번째에 나올 경우 첫번째 점수만 2배!)- 아차상(#)은 현재 점수 마이너스!- 스타상과 아차상은 서로 중첩될 수도 있는데 만일 스타상이 두번 걸리면 가운데 점수는 4배가 되겠죠? 만일 아차상과 스타상이 중첩되면 현재 점수는 -2배가 되겠죠? 나의 풀이import Foundationfunc solution(_ ..
2018년 카카오 블라인드 채용 문제 중 하나! 어렵게 생각해서 이중 포문 써서 풀었다가 비효율적인것 같아서 다시 풀기^^..자릿수 맞추는 부분에서 고민 많이 했다는..ㅠㅠ 나의 풀이func solution(_ n:Int, _ arr1:[Int], _ arr2:[Int]) -> [String] { var answer: [String] = [] for (s1, s2) in zip(arr1, arr2) { let originBinary = String(s1 | s2, radix: 2) let binary = originBinary.count - zip 연산자 사용해서 두 배열을 쌍으로 가져와 덧셈 연산 후 이진수로 변환- 자릿수를 동일하게 맞춰주기 위해 부족한 자릿수만큼..
나의 풀이func solution(_ arr1:[[Int]], _ arr2:[[Int]]) -> [[Int]] { var result = Array(repeating: Array(repeating: 0, count: arr1[0].count), count: arr1.count) for i in 0..- 배열 생성 후 이중 for문으로 접근해 덧셈 연산 다른 사람의 풀이func solution(_ arr1:[[Int]], _ arr2:[[Int]]) -> [[Int]] { return zip(arr1, arr2).map { zip($0,$1).map { $0+$1 } }}- zip 연산자로 쌍을 이루어 map으로 배열 순회하며 각 값끼리 더한 뒤 동일한 배열 형식으로 반환- zip..
정답률 63% 문제! 어떻게 풀까 하다 일단 소수 이려면 2를 제외한 짝수는 모두 소수 성립이 안되니까경우의 수로 따져서 조합하기로 해봄 서로 다른 세개의 정수의 합이 홀수인 것만 소수인지 아닌지 판별 1. 홀 + 홀 + 홀 = 홀수 (O)2. 홀 + 홀 + 짝 = 짝수 (X)3. 홀 + 짝 + 짝 = 홀수 (O)4. 짝 + 짝 + 짝 = 짝수 (X) 4가지 케이스 중에 1번, 3번 2가지 케이스만 고려하면 됨! 나의 풀이import Foundationfunc solution(_ nums:[Int]) -> Int { var answer = 0 // 1. 홀 + 홀 + 홀 let oddArray = nums.filter { $0 % 2 == 1 } if oddArray.cou..
나의 풀이import Foundationfunc solution(_ rank:[Int], _ attendance:[Bool]) -> Int { var result: [Int] = [] var i = 1 while(result.count != 3) { if let index = rank.firstIndex(of: i), attendance[index] { result.append(index) } i += 1 } return 10000 * result[0] + 100 * result[1] + result[2]}- 결과값을 저장할 배열 생성 및 초기화- while 반복문을 돌리는데 문제에서 3명 선발한다 했으니 ..
쉬워보이는데 질문하기가 왜이렇게 많지..?😳하며 풀었다가 나도 와라라랅 틀림^^ㅋ문제를 자세히 보면 제한 사항에 "문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다."라고 친절하게 나와있었다.. 이말은 즉, 공백을 기준으로 인덱스가 다시 0부터 시작한다는 의미!역시 문제를 잘 읽어봐야.. 나의 풀이func solution(_ s:String) -> String { var i = 0 var result = "" for c in s { if String(c) == " " { result += String(c) i = 0 } else { result +=..
나의 풀이func solution(_ s:String, _ n:Int) -> String { let alpha = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"] var result = "" for c in Array(s) { if !String(c).isEmpty, let index = alpha.firstIndex(of: String(c).lowercased()) { result += c.isUppercase ? alpha[(index + n) % alpha.co..