프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 설계조합을 이용해서 풀어야겠다는 생각, 그 이후로 비교를 하면서 후보키의 개수를 정해야겠다는 생각까지만 했고 어떻게 설계해야 할지 전혀 감이 오지 않았다. 뭔가 알 거 같은데 제대로 떠오르지는 않는... 문제 풀이 (정답) - 직접 푼 풀이 아님import Foundation// 주어진 릴레이션에서 후보키의 최대 개수를 찾는 함수func solution(_ relation: [[String]]) -> Int { let rows = relation.count // 릴레이션의 행 개수 let cols ..
Swift
Character//String이다. 큰 타옴표에 포함된 문자수와 관계없이 항상 문자열로 추론된다."C"//만약 문자로 처리하고 싶다면 명시적으로 선언let c: Character="C"//큰 따옴표 사이에 아무런 문자도 포함되어 있지 않다면 항상 문자열""//빈 문자를 캐릭터 타입에 저장할 땐 반드시 공백 추가let b: Character=" "append & appending//append는 리턴 타입이 없음 값을 리턴하지 않는다, 대상 문자열에 바로 연결//appending는 스트링 타입을 리턴 한다, 직접 연결하는 것이 아니라 새로운 복사본을 //만들어서 연결한 다음에 복사본 리턴//let으로 선언하면 원본 문자열을 변경할 수 없다.let str = "Hello"str.append("Swift")..
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 설계문자열을 1개 단위 압축부터 전체 문자열의 길이의 절반 단위까지 압축을 한 결과를 모두 구해서 가장 짧은 것을 반환하면 되겠다고 생각(압축 단위가 문자열 길이의 절반을 넘어가는 순간 (1 ~ s.count/2) 단위까지 한 것보다 더 짧아질 수 없음.) 그리고 단위 별로 문자열을 자르고 임시로 저장한 다음에 다음 조각과 같다면 cnt로 횟수를 관리해 주었고 다르다면 지금까지 나온 횟수를 따져서 최종 문자열에 추가그리고 압축한 문자열의 길이를 result에 넣어주었고 모든 압축 단위를 다 수행하고 나서..
특징딕셔너리에 저장되는 요소는 정렬되지 않는다.딕셔너리는 만 번 정도는 같은 순서로 열거되다가 이후부터 순서가 갑자기 바뀔 수 있다.딕셔너리는 정렬되지 않은 컬렉션하나의 타입만 저장할 수 있다. 키의 타입이 모두 같고 값의 타입이 모두 같아야 함. 하지만 키와 값의 타입은 서로 달라도 된다.딕셔너리 결과는 항상 옵셔널이기 때문에 옵셔널 처리에 주의해야 한다.선언let dict1: Dictionarylet dict2:[String:Int] 저장된 요소 개수 확인(.count)let words=["A":"Apple","B":"Banana","C":"City"]print(words.count)//3 비어있는지 확인(.isEmpty)let words=["A":"Apple","B":"Banana","C":"Cit..
배열의 길이let nums = [1,2,3]print(nums.count)//3//비어있는지 확인print(nums.isEmpty)//false배열 요소 접근//subscript 문법 사용let fruits = ["Apple", "Banana","Melon"]print(fruits[0]) //배열 비어있을 때 인덱스로 접근하면 에러 발생//Apple// 범위let fruits = ["Apple", "Banana","Melon"]print(fruits[0...1])//["Apple", "Banana"]let fruits = ["Apple", "Banana","Melon"]//정수 인덱스 대신 속성으로 제공하는 인덱스 사용하면 더 안전한 코드print(fruits[fruits.startIndex])//Ap..
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 설계문제에서 주어진 과정을 통해 함수들을 어떻게 구성할지 설계한 후 함수 별로 구현해야 하는 코드를 작성과정 1번부터 4-5번까지 읽으며 어떤 함수들이 필요한지, 재귀를 어떻게 구성할지 생각문제 풀이(정답)import Foundation// 함수 - 두 균형잡힌 괄호 문자열로 분리// 입력된 문자열을 두 균형잡힌 괄호 문자열로 나눕니다.func divideBalance(_ d:String) -> [String] { var cntL = 0 var cntR = 0 var u = "" v..
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 설계s="{{2},{2,1},{2,1,3},{2,1,3,4}}" 다음과 같이 문자열이 들어온다. 먼저 양 끝 {{와 }}를 없애주면 더 편하게 나눌 수 있을 것 같아서 제거 해주었다.2},{2,1},{2,1,3},{2,1,3,4 그 후 },{을 기준으로 문자열을 나눠서 배열에 저장해주었다.["2","2,1","2,1,3","2,1,3,4"]그 후 모든 요소에 대해 ,을 기준으로 나눠서 정수화 하여 2차원 배열로 만들었다. (그리고 배열의 길이를 기준으로 오름차순으로 정렬)[[2],[2,1],[2,1,3]..
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 설계 임시로 숫자와 연산자를 담아놓을 리스트 1개 임시로 담아놓을 문자열 1개 문자열을 처음부터 끝까지 검사해서 숫자면 임시 문자열에 붙여줌, 연산자가 나올 때까지 반복, 연산자가 나오면 임시 문자열을 리스트에 넣음, 그리고 연산자도 리스트에 넣음, 그리고 임시 문자열 초기화 Int64 { var tmp: [String] = [] // 숫자와 연산자를 순서대로 저장할 임시 배열 var words: String = "" // 현재 처리 중인 숫자를 저장할 문자열 // 숫자와 연산자 집합 정의 let num..