문제 https://programmers.co.kr/learn/courses/30/lessons/12985 토너먼트 게임에서 총 참가자 수 n명, 라이벌 a, b의 토너먼트 위치번호가 주어진다. 예를들어서 8명이라고 치면 1번과 2번, 3번과 4번.. 7번과 8번이 경기를 치루는 식으로 토너먼트가 진행 됬을 때, a랑 b가 몇 라운드에서 서로 붙는지 return 하는 문제 제한사항 N : 21 이상 220 이하인 자연수 (2의 지수 승으로 주어지므로 부전승은 발생하지 않습니다.) A, B : N 이하인 자연수 (단, A ≠ B 입니다.) 입출력 예 N A B answer 8 4 7 3 접근방법 한번 경기를 치루고 나면 a 선수의 순번은 a/2 + a%2 라는것을 알게 되었다. 그리고 결국 경기를 치룰 때..
문제 https://programmers.co.kr/learn/courses/30/lessons/12981 1부터 n까지 번호가 붙어있는 n명의 사람이 영어 끝말잇기를 하고 있음. 끝말잇기 규칙. 1번부터 번호 순서대로 한 사람씩 차례대로 단어를 말합니다. 마지막 사람이 단어를 말한 다음에는 다시 1번부터 시작합니다. 앞사람이 말한 단어의 마지막 문자로 시작하는 단어를 말해야 합니다. 이전에 등장했던 단어는 사용할 수 없습니다. 한 글자인 단어는 인정되지 않습니다. 틀린사람의 [번호,사이클 횟수]를 return 하는 문제 만약 주어진 단어들로 탈락자가 생기지 않는다면, [0, 0]을 return 접근 방법 위치값 pos, 사이클 횟수값 cycle 변수로 체크해가면서 그냥 for문을 돌렸다. 코드
문제 https://programmers.co.kr/learn/courses/30/lessons/12977 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요. 접근방법 3개의 수를 뽑아야 하니깐 조합으로 3개의 수를 뽑고 그 수의 합이 소수이면 count += 1 return count 뽑아야 할 수가 적다면, 단순하게 for문을 뽑을 갯수만큼 만들어 주면 조합이 된다. 요런식으로.. 3개를 뽑는건 for문 3개.. 단 많을경우 dfs를 통해 조합을 만들어 주면 된다. 풀이
문제 https://programmers.co.kr/learn/courses/30/lessons/12973 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다. 예를 들어, 문자열 S = baabaa 라면 b aa baa → bb aa → aa → 의 순서로 문자열을 모두 제거할 수 있으므로 1을 반환합니다. 접근..
문제 https://programmers.co.kr/learn/courses/30/lessons/67257 계산식을 문자열로 입력받아 계산을 하는데, 연산자 우선순위(같은경우는 없고 다 달라야함)에 따라 계산값이 달라지는데, 이 중 최댓값을 출력하는 문제. 문제 규칙상 계산식의 결과가 상금임으로 음수가 나올 경우 절댓값으로 계산. 접근 방법 위 문제를 풀려면 우선 사칙연산을 할 줄 알아야 한다. 사칙연산 문제에서 연산자 우선순위가 추가된 문제. 사칙연산을 풀려면 연산자 우선순위에 따라 계산하기 편한 후위 표기법으로 변경하여 풀 수있다. 즉 식을 Stack을 사용해서 후위 표기법으로 변경 후위 표기법 계산 방법을 Stack을 사용해서 풀이 과정을 통해 풀 수 있다. 식을 후위 표기법으로 변경 방법 var ..
문제 https://programmers.co.kr/learn/courses/30/lessons/12953 자연수 array 입력받으면 array 수들의 최소 공배수 return 접근 방법 유클리드 알고리즘을 사용하면 두 수의 최소공배수를 빠르게 구할 수 있다. > 유클리드 알고리즘 두 수 a, b가 있으면 최소 공배수는 a*b / 최대 공약수 인데, 최대 공약수 구하는 방법은 r = a&b 에서 나눈 나머지를 r이라고 하면 if r == 0 {b는 최대 공약수} else { b = a a = r // 로 해서 다시 반복 } 하다 보면 최대 공약수가 구해진다. 위 과정은 소인수 분해를 하는 과정을 사용한 것이다. 최대 공약수를 구했으면 이 값을 이용해 최소 공배수를 구할 수 있다. 최소공배수 ..
- Total
- Today
- Yesterday
- Github Search
- TransitionStyle
- 위젯
- 카카오 블라인드 2018
- 백준 신입사원
- presentStyle
- 백준 1946
- BaseViewController
- 1차 뉴스 클러스터링
- BaseTableViewController
- Stack
- Swift
- 카카오블라인드2018
- today extension
- Widget
- ios
- ReactorKit
- Level 3
- 프로그래머스 오픈채팅방
- VIPER 패턴
- RxDataSource
- 자기PR
- UIModalPresentationStyle
- 아키택처
- 알고리즘
- 괄호연산
- RxSwift
- 프로그래머스 캐시
- 프로그래머스 추석트래픽
- 카카오 블라인드2018
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |