본문 바로가기

전체 글282

[고득점 Kit (완전 탐색)] 소수 찾기 (swift) 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr 풀이 먼저 입력 받은 numbers 문자열을 Int형 배열로 만들어준다. let intArray: [Int] = numbers.map { Int(String($0)) ?? 0 } 순열을 이용해서 만들어 낼 수 있는 모든 숫자 조합을 찾은 후에 각각의 숫자를 소수인지 판별하여 셋에 저장한 후에 마지막에 셋에 있는 숫자의 개수를 카운트한다. 코드 import Foundation var res: Set = [] func isPrime(_ num: Int.. 2021. 10. 11.
[Swift] Chapter 19. 타입캐스팅 스위프트는 데이터 타입 안전을 위하여 각기 다른 타입끼리의 값 교환을 엄격히 제한한다. 또, 다른 프로그래밍 언어에서 대부분 지원하는 암시적 데이터 타입 변환은 지원하지 않는다. 19.1 기존 언어의 타입 변환과 스위프트의 타입 변환 먼저 [코드 19-1]에서 C언어와 스위프트의 데이터 타입 변환을 살펴보자. /* 코드 19-1. C언어와 스위프트의 데이터 타입 변환 비교 */ // C 언어 double value = 3.3 int convertedValue = (int)value convertedValue = 5.5 // double -> int 암시적 데이터 타입 변환 // 스위프트 var value: Double = 3.3 var convertedValue: Int = Int(value) conve.. 2021. 10. 11.
[고득점 Kit (완전탐색)] 모의고사 (swift) 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 풀이 각각의 수포자의 정답 패턴을 배열에 담아둔다. answers 배열을 for문으로 돌면서 각각의 수포자가 정답을 맞췄는지 체크 후에 가장 많은 문제를 맞힌 사람을 체크하여 res 배열에 담아 return 해준다. 코드 import Foundation var first: [Int] = [1, 2, 3, 4, 5] var second: [Int] = [2, 1, 2, 3, 2, 4, 2, 5] var third: [Int] = [3, 3, 1, 1, 2, 2, .. 2021. 10. 11.
[고득점 Kit (DFS/BFS)] 네트워크 (swift) 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr 풀이 네트워크 확인 여부를 위한 Bool형 배열을 하나 만들어준다. 만약 컴퓨터 번호에 해당하는 Bool 값이 true이면 이미 하나의 네트워크에 포함된 컴퓨터임을 의미한다. for문으로 모든 컴퓨터 번호를 체크해서 만약 해당 컴퓨터 번호가 아직 어떤 네트워크에도 속하지 않았다면 dfs 함수를 호출해서 모든 연결되어있는 컴퓨터 번호를 체크하는 과정을 거친다. dfs가 호출될때마다 네트워크 개수를 하나 증가시켜주고 최종적으로 해당 개수를 return 해주면 .. 2021. 10. 11.
[고득점 Kit (DFS/BFS)] 타켓 넘버 (swift) 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr 풀이 DFS를 활용해서 해결하는 문제 입력 받은 numbers 배열의 처음부터 끝까지 돌면서 한 번은 더하고 한 번은 빼준다. 끝까지 다 계산한 값과 타겟 넘버를 비교해서 둘의 값이 같으면 경우의 수를 1 증가시킨다. 마지막에 경우의 수를 return한다. dfs(idx:len:sum:) idx : numbers 배열에서 이번에 계산해야 할 인덱스 번호 len: numbers 배열의 길이 sum: number.. 2021. 10. 11.
[Weekly Challenge] 5주차_모음사전 (python, swift) 코딩테스트 연습 - 5주차_모음사전 사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니 programmers.co.kr 풀이 words 배열에 모음의 순서대로 담아둔다. 그리고 재귀를 돌면서 입력받은 단어가 몇 번째에 있는지를 탐색한다. 재귀를 도는 과정은 다음 처럼 진행된다. "A" → "AA" → "AAA" → "AAAA" → "AAAAA" 그 후 현재 단어의 길이가 5가 됐으므로 중간에 탐색이 종료된다. 그럼 이제 "AAAA"에 모음의 두 번째 단어인 "E"가 붙어 "AAAAE"가 된다. 함수가 한 번 호출될때마다 cnt.. 2021. 10. 11.
[Weekly Challenge] 2주차_상호평가 (python, swift) 코딩테스트 연습 - 2주차_상호평가 [[100,90,98,88,65],[50,45,99,85,77],[47,88,95,80,67],[61,57,100,80,65],[24,90,94,75,65]] "FBABD" [[70,49,90],[68,50,38],[73,31,100]] "CFD" programmers.co.kr 풀이 먼저 각 학생 별로 얻은 총 점수의 배열을 만든다. 그 후 배열을 돌면서 각 학생 별로 최고 점수, 최저 점수, 점수의 총합을 구한다. 최고 점수나 최저 점수가 자기 자신한테 준 점수와 같을 경우 해당 점수를 제외하는 과정을 거쳐서 등급을 산출하면 된다. 코드 Python # 점수에 따른 학점 부여 함수 def gradeCheck(score): if score >= 90: return '.. 2021. 10. 10.
[Swift] Chapter 18. 상속 클래스는 메서드나 프로퍼티 등을 다른 클래스로부터 상속받을 수 있다. 어떤 클래스로부터 상속을 받으면 상속받은 클래스는 그 어떤 클래스의 자식클래스라고 표현한다. 자식클래스에게 자신의 특성을 물려준 클래스를 부모클래스라고 표현한다. 스위프트의 클래스는 부모클래스로부터 물려받은 메서드를 호출할 수 있고 프로퍼티에 접근할 수 있으며 서브스크립트도 사용할 수 있다. 또, 부모클래스로부터 물려받은 메서드, 프로퍼티, 서브스크립트 등을 자신만의 내용으로 재정의할 수도 있다. 스위프트는 부모클래스의 요소를 자식클래스에서 재정의할 때 자식클래스가 부모클래스의 요소들을 재정의한다는 것을 명확히 확인해주어야 한다. 상속받은 프로퍼티에 프로퍼티의 값이 변경되었을 때 알려주는 프로퍼티 감시자도 구현할 수 있다. 연산 프로퍼.. 2021. 10. 10.
[Swift] Chapter 17. 서브스크립트 클래스, 구조체, 열거형에는 컬렉션, 리스트, 시퀀스 등 타입의 요소에 접근하는 단축 문법인 서브스크립트(Subscript)를 정의할 수 있다. 서브스크립트는 별도의 설정자(Setter) 또는 접근자(Getter)등의 메서드를 구현하지 않아도 인덱스를 통해 값을 설정하거나 가져올 수 있다. 클래스와 구조체는 필요한 만큼 얼마든지 서브스크립트를 구현할 수 있다. 서브스크립트를 여러 개 구현해도 외부에서 서브스크립트를 사용할 때는 서브스크립트를 사용할 때 전달한 값의 타입을 유추하여 적절한 서브스크립트를 선택하여 실행한다. 이렇게 여러 서브스크립트를 한 타입에 구현하는 것을 서브스크립트 중복 정의라고 한다. 매개변수의 타입과 반환 타입에는 제한이 없다. 함수와 마찬가지로 서브스크립트는 여러 개의 매개변수를 .. 2021. 10. 10.