https://school.programmers.co.kr/learn/courses/30/lessons/258705 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제분석n이 주어지면 밑변이 n+1로 깔림. 그리고 tops 배열에 따라 위에 삼각형이 있는지 없는지 결정된다. 1이면 위에 있는거고 0이면 없는거고 즉 위의 이미지는 일부러 짤랏지만 [0,1]이겟쥬? 그런데 삼각형 2개로 이루어진 사다리꼴과 삼각형 1개로 배치해서 가득 채우는 경우를 10007로 나누라고 한다.문제접근에? 이렇게 큰 수로 나눠? 이건 DP네~! 자 여기까지 감을 잡았다. // 그런데 기존의 DP와 다른게 n도 달라질수 ..
https://www.acmicpc.net/problem/12980흠..이 문제는 풀이가 없는 것 같아서 내가 먼저 올린다. 그래야 조회슈 ㅎ...는 농담이고 문제가 재밌다.문제분석1. 순열의 크기 n이 주어진다. 그리고 1..N까지 써야하는 배열이 있다. 이 배열에는 0이 있는데 이는 지워졌다는 것을 의미한다.2. 즉 0자리에는 이미 배열에 있는 수 말고 1..N까지의 수 중 아무거나 사용할 수 있다.3. 하지만 S 점수를 맞추는 경우의 수를 구해야한다.4. 점수? [1,2,3] 이라고 보면 [1,2] , [1,3], [2,3]의 케이스가 가능하기에 총 3점이다. 이런식으로 배열의 인덱스와 값을 비교해 i 문제접근1. 0인 곳에 남은 수로 채워서 모든 경우를 구해보자.2. 그 케이스별로 계산을 하여..
https://school.programmers.co.kr/learn/courses/30/lessons/214288 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr오랜만입니다. 알고리즘은 계속 풀고 잇엇으나 그닥 올릴만한 것이 없어서...ㅜ (핑계핑계)자 이번문제는 내가 PM이라고 몰입해야한다.문제 분석 1. 멘토에게 유형이 있음. 맞는 유형의 사람을 시간이 되면 한명씩 진행. 2. 그런데 만약 여러명이 웨이팅중이다? 가장 먼저 상담요청한 참가자부터 진행한다. 3. req는 c번 유형의 사람이 a분때 b분만큼 요청하는 것을 의미한다. -> 결국 구해야하는것은 기다리는 시간을 최소로 하도..
https://www.acmicpc.net/problem/17298문제 해석먼저 문제이다. 음..? 문제 이해는 굉장히 쉽다. 그냥 나보다 오른쪽에 있는 것들중에 큰것중에 나랑 가장 가까운 놈을 찾아서 찍어주면 된다.단순히 생각할 수 있는 방법은 포인터를 이용한 방법이였다. 2중 For문을 통해 현재 내껏보다 오른쪽으로 하나씩 가면서 큰것을 발견하면 Break를 걸어주고 정답 Array에 추가해주는 방식이다. 하지만 문제를 잘 읽어보면 1,000,000까지도 가능하다. 최악의 경우 O(n제곱)인 기존의 방법으로는 시간초과가 뜰것이 분명하다. 그래서 다른 방식을 생각해보아야 했다.문제 풀이Stack을 활용하여 풀이를 한다. 먼저 가장 앞의 인덱스와 해당 넘버를 스택에 넣어준다. 그 후 한칸씩 뒤로 가며 ..
오랜만에 돌아온 알고리즘 솔루션정리!!!https://www.acmicpc.net/problem/9251 9251번: LCSLCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.www.acmicpc.net오늘의 문제이다! LCS최장 공통 부분 수열을 구하라는 문제!어떻게 구하면 될까?1. 맨 마지막문자열부터 비교를 해보면 된다. 예를들어 이렇게 있을때 만약 맨마지막 문자열이 같다? 하면 이전까지의 최장공통부분수열의 개수 + 1이다.즉 LCS(i,j) = LCS(i-1, j-1) + 1 이라는 점화식이 나오게 된다. 그렇..
큐 구현이다. swift로는 큐를 어떻게 구현하는지를 물어보는 거였다. // // main.swift // Queue // // Created by 235 on 2023/09/05. // import Foundation struct Queue{ var queue: [Int] = [] public var size: Int { return queue.count } public var isEmpty: Bool { return queue.isEmpty } public var front: Int { return isEmpty ? -1 : queue[0] } public var back: Int { guard let last = queue.last else {return -1} return last } mutati..
오랜만에 돌아왔습니다 ㅠㅠㅠ 한동안 알고리즘을 놓다가 다시 잡게 되었네요. 이전까지는 주로 난이도 있는 것들을 파이썬으로 푸는 풀이들을 올렸었는데 리뉴얼을 했습니다!!! 올해 마치고 바로 취업에 목표를 둔것이 아니기에 swift로 차근차근 난이도를 높여가며 풀어과는 과정을 이제부터 올릴 예정입니다. 대망의 첫문제는 바로 유명한 팰린드롬수! 문제의 이해는 브론즈1로 낮기에 바로 풀이로 들어가겠습니다. // // main.swift // Algoritm // // Created by 235 on 2023/09/04. // import Foundation var arr: [String] = [] while true { var input = readLine()! if input == "0"{ break }els..
https://school.programmers.co.kr/learn/courses/30/lessons/92344 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ?? 왤캐 쉬워? 하면서 풀었던 문제 1트 타입이1이라면 데미지니까 보드에서 디그리만큼 빼주고 아닐경우는 더해주고 보드를 전체적으로 돌아보면서 0보다 크다면 남아있는벽이므로 answer+=1해주었다. 그랫더니 결과는? 두구두구두구... def solution(board, skill): answer = 0 for type,r1,c1,r2,c2,degree in skill: if type == 1: ..
https://school.programmers.co.kr/learn/courses/30/lessons/92342 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. n의 제한이 10이기에 일단 나는 중복조합을 사용해도 된다고 생각을 하였다. 2. info를 보면 점수가 첫번째인덱스가 10이고 줄어드는 형식으로 되어있기에 temprion에도 만약 내가 맞춘 점수에 해당하는 인덱스에 1이 증가하도록 하였다. 그리고 나서 해당하는 temprion과 info를 비교하면서 만약 temprion이 크다면 라이언이 해당하는 점수를 얻고 아닌데 만약 Info[k]에만..
https://school.programmers.co.kr/learn/courses/30/lessons/92341 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제해석 fees에 순서대로기본시간, 기본요금, 추가시간당, 추가요금으로 나오고 records에는 몇시에 어떤차가 들어오거나 나갔는지의 기록이 있다. 먼저 레코드들의 정보를 쪼개서 cardict에 key값으로는 차번호가 value에는 시간과 in,out상태를 넣어주었다. 첫번째 for문을 다 돌게 되면 키값에 해당하는 모든 history가 value로 이차배열이 들어가게 된다. 그 후 문제에서 보..