Swift 코딩테스트/Swift 백준 문제 풀이(21)
-
[Swift 코테] 백준 1316 그룹 단어 체커
배열과 집합의 인덱스를 활용해 문제를 풀었습니다. 1. 배열의 중복 요소를 제거한 집합을 만들고 2. 집합의 요소를 기준으로 배열에서 해당 요소의 처음, 마지막 인덱스를 구조체에 저장합니다. 3. 구조체를 처음 인덱스를 기준으로 정렬한 후 4. 해당 요소의 마지막 인덱스와 다음 요소의 처음 인덱스를 비교합니다. 5. lastIndex firstIndex 라면 return false 코드 import Foundation struct order{ var start: Int var end: Int } var num = Int(readLine()!)! var count = 0 for i in 0.. Bool{ var arr = Array..
2022.03.17 -
[Swift 코테] 백준 2941 크로아티아 알파벳
하루 지나서 푸니까 생각보다 너무 간단했던 문제였다. 복잡하게 문자열로 바꿔서 풀지 말고 String 함수를 많이 알아야 겠다고 느낀 문제였다. 아래 contains와 replaceOccurrences함수가 메인이다. line.contains("지금 이거를") line = line.replaceOccurrences(of: "지금 이거를", with: "이걸로 바꾸자") 1. 이전 운영체제 버전의 크로아티아 알파벳의 유무를 String 함수인 contains로 확인하고 2. 있다면 다른 Character 하나로 변경한다 ex) "0" - 숫자는 입력되지 않기 때문 3. 모든 String을 살펴봐야 하기 때문에 else if 문이 아닌 if문만 사용 4. 바뀐 String을 Array로 변경하고, Array..
2022.03.17 -
[Swift 코테] 백준 11654 아스키 코드
코드 let input = readLine()! print((Character(input).asciiValue)!) //A = 97 //a = 65
2022.03.14 -
[Swift 코테] 백준 10818 최소, 최대
개껌처럼 보이지만 개껌 씹다가 이에 살짝 금간거 같다. 1. import Foundation -> components(separatedBy: " ") 대신 아무것도 import 하지 말고 .split(separator: " ") 사용하기 2. sorted()와 min(), max()는 의외로 차이가없었습니다. sorted()는 시간 복잡도가 O(n log n) / min(), max()는 O(n) 여하튼 코드는 다음과 같습니다. let input = Int(readLine()!)! var arr = readLine()!.split(separator: " ").map({ (value) in Int(String(value))! }) print("\(arr.min()!) \(arr.max()!)")
2022.03.08 -
[Swift 코테] 백준 10951 A + B - 4
10952와 비슷한 문제인 줄 알았더니 endpoint가 따로 주어지지 않는다. 이경우 input이 계속 입력되는지 마는지를 while문에서 어떻게 확인할 수 있는지를 찾아야 했다. while문 뒤의 조건에는 Bool 타입만 와야 하기 때문에 입력인 readLine()이 true인지 false인지를 조건으로 주어야 한다. while let input = readLine() { var line = input.split(separator: " ") print(Int(line[0])! + Int(line[1])!) }
2022.03.07 -
[Swift 코테] 백준 2741 N 찍기
단계별 for문 풀기의 바로 앞 문제가 파일 입출력을 요구하는 시간제한이 있었기 때문에 이번 문제도 그런게 있는게 아닌가 고민했다. 그냥 for문과 print로도 통과가 가능했다. var number = Int(readLine()!)! for i in 1.. string안에 넣어서 한 번에 출력하기 2. for i in 0..
2022.02.11 -
[Swift 코테] 백준 15552 빠른 A+B
다른 언어의 경우에는 이글에 설명되어 있다 -> import Foundation final class FileIO { private let buffer:[UInt8] private var index: Int = 0 init(fileHandle: FileHandle = FileHandle.standardInput) { buffer = Array(try! fileHandle.readToEnd()!)+[UInt8(0)] // 인덱스 범위 넘어가는 것 방지 } @inline(__always) private func read() -> UInt8 { defer { index += 1 } return buffer[index] } @inline(__always) func readInt() -> Int { var sum..
2022.02.11 -
[Swift 코테] 백준 10717 고양이
설명 문자열의 특수문자는 #""#으로 처리할 수 있다. 3개의 따움표는 여러줄의 String을 처리하기 위함이다. 코드 import Foundation var cat = #""" \ /\ ) ( ') ( / ) \(__)| """# print(cat) 결과 \ /\ ) ( ') ( / ) \(__)| Program ended with exit code: 0
2022.02.10 -
2292벌집
위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다. 최단 경로는 그 수가 포함된 층의 번호이다. 층의 번호를 구하는 방법은 육각형의 특징을 살리면 된다. 층 과정 (포함된 숫자 개수) 마지막 수(누적) 1 1 1 2 2 * 6 - 6 (중복제거) =6 7 3 3 * 6 - 6 = 12 19 4 4 * 6 - 6 =18 37 따라서 input 값이 누적값 보다 ..
2020.10.09