본문 바로가기

ALGORITHM

(71)
[Swift] Codewars: Persistent Bugger https://www.codewars.com/kata/55bf01e5a717a0d57e0000ec Codewars - Achieve mastery through coding practice and developer mentorship A coding practice website for all programming levels – Join a community of over 3 million developers and improve your coding skills in over 55 programming languages! www.codewars.com Codewars 사이트에서 처음 푼 문제 무슨 기준으로 추천해주는지 모르겠는데 나갔다가 다시 들어가니까 추천 문제가 바뀌어 있는..?! 과거 코드는 따..
[Swift] LeetCode: Greatest English Letter in Upper and Lower Case (아스키코드) https://leetcode.com/problems/greatest-english-letter-in-upper-and-lower-case/ 문제 문자열 s를 주는데 여기서 소문자, 대문자가 모두 나온 문자 중 가장 큰 대문자를 리턴하는 문제입니다. 풀이방법 Set 배열하나와 result 배열 하나를 두어서 set 배열에는 s 문자열을 이루는 문자들을 모두 넣어주었습니다. -> 근데 contains 함수를 사용하면 굳이 set 배열을 만들 필요가 없겠네요.. 그리고 set 배열을 돌면서 소문자이면 대문자가 있는지, 대문자이면 소문자가 있는지 검사 후에 result 배열에 넣어주었습니다. -> 소문자인지 대문자인지 구별하는 방법이 Swift5 에서 Character 값에 대해 isLowerCase 를 사용..
[Swift] 프로그래머스 Lv1. 신규 아이디 추천 https://programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 정규식으로 풀어보려했지만 그냥 구현하고 싶어 구현 하다가? filter 에 조건을 여러개 넣었더니 시간안에 타입체크 할 수 없다고 쪼개보라고 에러가 발생했다. ID = ID.filter { ("a"
[Swift] 프로그래머스 Lv3. 표 편집 (구현) https://programmers.co.kr/learn/courses/30/lessons/81303 코딩테스트 연습 - 표 편집 8 2 ["D 2","C","U 3","C","D 4","C","U 2","Z","Z"] "OOOOXOOO" 8 2 ["D 2","C","U 3","C","D 4","C","U 2","Z","Z","U 1","C"] "OOXOXOOO" programmers.co.kr 생각 간단한 Row 노드를 만들어서 링크드 리스트로 구현했다. 숫자 num과 앞의 노드 숫자 prev, 뒤의 노드 숫자 next, 현재 표에 들어가 있는지 체크하는 isTable 변수 만약 범위를 벗어나는 숫자 (맨 앞의 앞, 맨 뒤의 뒤) 면 -1로 두었다. 나머지는 조건대로 구현 테스트 1, 2, 3, 4 시..
[Swift] Lv3. 여행경로 (dfs) https://programmers.co.kr/learn/courses/30/lessons/43164# 코딩테스트 연습 - 여행경로 [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] programmers.co.kr 생각 경로를 찾아서 갔다가 아니라면 return 해주기 나라 전체 방문이 아니라 티켓을 모두 쓰는(방문하는) 문제였다. dfs를 오랜만에 봤더니.. 어떻게 푸는지 까먹어서 많이 헤맸다.. 코드 전역변수를 안쓰려고 하다보니 매개변수 넣는 부분이 너무 ~ 길어져서 조금 코드가 복잡해졌다. 1, 2번 테스트 케이스를 틀렸는데 아래 ..
[Swift] 5582 공통 부분 문자열 (DP) https://www.acmicpc.net/problem/5582 5582번: 공통 부분 문자열 두 문자열이 주어졌을 때, 두 문자열에 모두 포함된 가장 긴 공통 부분 문자열을 찾는 프로그램을 작성하시오. 어떤 문자열 s의 부분 문자열 t란, s에 t가 연속으로 나타나는 것을 말한다. 예를 들 www.acmicpc.net 생각 처음엔 contains 함수를 사용하여 일일이 길이를 구했는데 시간초과가 났다. 시간을 줄이기 위해서 DP를 사용 풀이 만약 [i]와 [j]의 알파벳이 같다면 [i-1][j-1] 까지의 공통 부분 길이에서 1을 더해주고 저장한다. 같지 않다면 0이다. A B R R 0 0 1 A 1 0 0 B 0 2 0 전체코드 import Foundation let str1 = Array(rea..
[Swift] LeetCode: Search Insert Position (lower bound) https://leetcode.com/problems/search-insert-position/ Search Insert Position - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 생각 냅다 바이너리 서치로 풀었다가 아 맞다 이거 찾는게 따로 있었는데 생각해서 다시 푼 문제..! lower bound : 찾고자 하는 값 이상이 처음 나타나는 위치 upper bound : 찾고자 하는 값보다 큰 값이 처음 나타나는 위치 여기선 lower bound로 넣을 ..
[Swift] 베스트앨범 (dictionary, 정렬) https://programmers.co.kr/learn/courses/30/lessons/42579# 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr 생각 dictionary 에 key : 장르이름 value : (고유번호, 재생된 횟수) 로 선언해서 넣는다. [정렬] 1. 재생된 횟수를 모두 더해서 비교하여 재생된 횟수가 큰 장르이름 순으로 정렬한다. 2. 위에서 구한 순서대로 dictionary에서 장르이름을 찾아 재생된 횟수가 높은 순으로 value를 정렬한다. 장르 음악이 한번이면 한번만 출력한다...