분류 전체보기
-
가장 많이 받은 선물 -2-iOS 앱 개발 부트캠프/TIL 2024. 11. 10. 17:14
어제에 이어 가장 많이 받은 선물 알고리즘 문제를 풀었다.어제 [선물 준 사람 A : [A에게 선물 받은 사람 : 받은 횟수]] 형태의 이중 딕셔너리 giftRecord를 만들어 누가 누구에게 몇 번 선물을 주었는지 담아놓는 것까지 했었다.이제 여기서 A와 B 두 사람의 선물 주고받은 횟수를 비교하여 다음달은 누가 선물을 받을지 정하는 로직을 짠 뒤, 가장 많이 받게 될 사람을 뽑아내면 된다.값 출력 먼저 해보기이중 딕셔너리를 다루는게 좀 헷갈려서, 일단 A가 B에게 준 선물 횟수와 반대로 B가 A에게 준 선물 횟수를 각각 뽑아낼 수 있는지부터 해보았다.for(giver, receivers) in giftRecord를 통해 선물 기록이 담긴 giftRecord의 키를 giver로, 밸류를 receiver..
-
가장 많이 받은 선물 -1-iOS 앱 개발 부트캠프/TIL 2024. 11. 9. 18:20
문제음.. 내용이 뭔가 많다. 한 줄 씩 찬찬히 읽어보자. 두 사람씩 비교를 한다. A와 B 두 사람의 선물 주고받은 횟수를 비교하여, 횟수가 더 많은 사람이 받는 선물의 개수가 +1이 된다.이 과정을 모든 친구들과 비교하면 되고, 두 사람이 선물을 주고받은 기록이 없거나 횟수가 같다면 선물 지수를 비교해 선물 지수가 큰 사람이 받는 선물의 개수가 +1이 된다.선물 지수는 주고받은 모든 선물 기록을 토대로, 선물을 줬으면 선물지수가 +되고, 받았으면 -되는 식으로 계산한다.선물지수까지 같다면 선물을 주고 받지 않는다.그렇다면 입력으로 들어가는 friends와 gifts는 어떤 형식일까? 입력 값을 문제의 예시에서 확인해보자.friends엔 이름 한 단어씩 하나의 원소로 들어가 있고, gifts엔 두 사람..
-
자연수 뒤집기 알고리즘iOS 앱 개발 부트캠프/TIL 2024. 11. 7. 14:45
문제 및 제한조건이번주 내내 같은 방법을 계속 쓰게 되는 것 같다. 입력 받아서 한 글자씩 배열에 저장하는 거.. 이 문제도 입력 받은 자연수를 String으로 변환한 다음 한 글자씩 저장부터 한 뒤에, 역순으로 재정렬 하는 방법만 구현하면 될 것 같았다.sort라던가 다양한 방법이 있겠지만, 함수 호출해서 해결하는 건 너무 간단하다고 생각했다. 내가 직접 알고리즘을 구현하는 연습을 하고 싶어서 이중 반복문 사용해서 비교 후 정렬 시키기로 했다.첫 반복문을 사용해 한 글자씩 저장했고, 그 다음 있는 이중 반복문이 정렬을 하는 부분이었다.배열에서 하나의 요소를 두고, 나머지 요소를 순회하며 비교하는 방법을 생각했다. i번째 요소를 나머지 다른 요소들과 차례로 비교하여 작다면 교체하는 식으로 만들었는데, ..
-
야구게임 만들기 - 2iOS 앱 개발 부트캠프/TIL 2024. 11. 6. 17:31
어제에 이어 숫자야구 게임을 어느정도 완성하였다.실행시 입력을 받아 게임을 시작하거나, 종료하거나, 게임 기록을 확인 할 수 있고, 게임 시작 시 입력을 정답과 비교해 스트라이크와 볼 판정을 하여 힌트를 제공한다.코드 전체 내용은 https://github.com/maxminseok/baseballProject 에서 확인할 수 있다. GitHub - maxminseok/baseballProjectContribute to maxminseok/baseballProject development by creating an account on GitHub.github.com 현재 상태는 메인 파일에 게임 진행을 위한 코드가 작성되어 있고, 각 기능별 클래스들을 따로 분리하였다.Checks 폴더 - 정답이나 입력의..
-
야구게임 로직 만들기iOS 앱 개발 부트캠프/TIL 2024. 11. 5. 23:40
1. Lv1, Lv2 시작하기알고리즘 생각하기이 단계에서 해야 할 것은 정답을 랜덤으로 만들기, 3자리수 입력, 그리고 입력과 정답과 비교해 힌트를 출력하는 것이다.랜덤으로 3자리수를 만드는 것은 난수를 생성하는 Int.random(in: 100...999) 를 사용해 100부터 999까지의 숫자를 만들 것이다. 여기서 주의해야 할 것은 서로 다른 임의의 숫자여야 하기 때문에 100이나 999, 111, 311 같은 중복되는 숫자가 정답으로 생성되면 정답을 재생성 해야한다.또한 3자리 수를 입력 받을때도 마찬가지로 올바른 입력인지 체크해야 한다. readLine()을 이용해 입력을 받을 건데, readLine()은 String 타입을 반환하므로 형변환도 고려해야하고, 무엇보다 숫자가 아닌 값이 들어올 수..
-
약수의 합iOS 앱 개발 부트캠프/TIL 2024. 11. 4. 19:01
약수의 합문제 설명정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.제한 사항n은 0 이상 3000이하인 정수입니다. 문제 풀이for 반복문을 이용하여 1부터 n까지 반복하면서 n을 반복문의 반복 변수의 값으로 나누어서 나머지가 0일 경우 배열에 변수 값을 추가하고, 그 배열의 값을 모두 더하면 풀 수 있을 것 같았다.잘 될 것이라는 생각과 달리 17번의 테스트중 한 번 에러가 났다. 생각해보니 n이 0부터 3000까지의 정수인데 0일 경우 반복문 범위가 1에서 0까지라 에러가 난 것일 것이다.func solution(_ n:Int) -> Int { guard n > 0 else { return 0 } var divisor: [Int] = [] ..
-
짝수와 홀수, 배열의 평균값, 자리수 합치기iOS 앱 개발 부트캠프/TIL 2024. 11. 3. 14:19
짝수와 홀수문제 설명정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요.제한 조건num은 int 범위의 정수입니다.0은 짝수입니다. 문제풀이다음과 같이 num % 2 == 0 을 조건으로 짝수 홀수를 나누려고 했는데, 15번의 테스트 중 한 번 에러가 났다.음수나 0 때문인가 생각도 해봤지만 0은 짝수로 처리되니 문제가 없고, 2로 나눠서 나머지가 0인지 보는 것이니 음수인 것도 문제가 없다.혹시나해서 음수나 0, 여러 짝수와 홀수, 큰 수도 입력하며 테스트 해봤는데 문제를 발견하질 못했다. 어떤 테스트 값이 입력 되었길래 런타임 에러가 난 건지 모르겠다. 매개변수 타입이 Int이니 실수나 문자열이나 Int 범위를 넘는 숫자가 들어온 ..
-
짝수의 합, 배열의 평균 값iOS 앱 개발 부트캠프/TIL 2024. 11. 2. 22:35
짝수의 합문제 : 정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.짝수의 합을 저장할 evenNumber 변수 선언한 뒤 초기값을 0으로 설정하기for문과 범위연산자로 1...n으로 1부터 n까지 정수 반복하기if문의 조건 n % 2 == 0로 짝수를 거른 뒤 evenNumber에 더하기import Foundationvar evenNumber = 0func solution(_ n:Int) -> Int { for i in 1...n{ if i % 2 == 0 { evenNumber += i } } return evenNumber} 배열의 평균값문제 : 정수 배열 numbers가 매개변..