[프로그래머스/Swift] 덧칠하기
·
알고리즘/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/161989 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Bool 배열에 안 칠한 부분(0) 칠한 부분(1)을 구분해서 넣어줬다. 그리고 전체를 돌면서 안칠한 부분이라면 그곳에서 시작해서 m길이만큼 칠해줬다. 여기서 분기점이 하나 있는데, 어떤 지점 i에서 m 길이만큼 칠할 수 없는 경우다. 즉, i에서 칠하게 되면 롤러의 길이가 남은 부분의 길이보다 길어서 넘어가는 부분! 벗어나면 안 된다고 문제에 명시되어 있기 때문에 그리고 배열의 out of r..
[프로그래머스/Swift] 택배 배달과 수거하기
·
알고리즘/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/150369 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제는 가장 먼 거리를 먼저 끝내면 된다! 가장 먼 거리는 한 번만 가도록 한다. (최소 거리를 위해) 일단 이 문제는 stack으로 풀었다. 그전에, 뒤에서부터 배달 / 수거할 것이 없는 곳은 제거해 줬다. 0은 갈 필요 없으니... 그리고 수거할 곳, 배달할 곳 중 더 먼 곳을 answer에 넣어줬다. * 2를 한 이유는 왕복이니까. box에 택배트럭에 담은 박스 개수를 넣어준 변수다. ..
[프로그래머스/Swift] 이모티콘 할인 행사 (2023 Kakao Blind)
·
알고리즘/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/150368 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 블라인드 테스트땐 이 문제를 왜 못 풀었을까.. 내가 발전한 건지 아니면 전이 너무 부족했던 건지..^^ 우선 이모티콘마다 할인율을 정해주면 된다. 여기서 주의할 것은 하나의 할인율이 여러 이모티콘에 적용될 수 있다는 것! 즉, 중복 순열~ BT를 통해 중복 순열을 정해주고(combination), calculate 함수를 통해 결과값을 계산해 줬다. - 이모티콘 매출액(amount) - 서비스..
[백준/Swift] 1062번: 가르침
·
알고리즘/백준
https://www.acmicpc.net/problem/1062 1062번: 가르침 첫째 줄에 단어의 개수 N과 K가 주어진다. N은 50보다 작거나 같은 자연수이고, K는 26보다 작거나 같은 자연수 또는 0이다. 둘째 줄부터 N개의 줄에 남극 언어의 단어가 주어진다. 단어는 영어 소문 www.acmicpc.net 비트마스킹으로 풀어보겠습니다. 사실 이 문제는 다른 분들의 코드를 참고해서 구현했습니다. 비트마스킹을 잘 모르겠어서요^_^ wordsBit라는 배열을 사용했는데 이 부분을 2차원으로 할 수도 있지만 1차원으로도 할 수 있다! 바로, 해당 단어에 사용된 알파벳을 체크해 주는 방식인데, 시프트(shift)와 OR 연산을 사용한다! 시프트는 왼쪽 시프트 1 10100010000000000001 ..
[백준/Swift/c++] 14891번: 톱니바퀴
·
알고리즘/백준
https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net 톱니바퀴가 12시부터 시계방향으로 N/S 값이 배열로 입력된다. 우선 각 톱니바퀴의 방향을 dir 배열에 넣어주고, 톱니바퀴의 각 톱니의 값을 바꿔주는 방식으로 진행했다. 회전하는 톱니바퀴를 기준으로 left와 right 부분을 나눠서 진행했다. 각 방향으로 가던 중 돌아가지 않는다면( 같은 극의 경우 ) 끝낸다. 그 바퀴가 돌아가지 않으면 그 다음(혹은 이전)의 톱니바퀴도 돌아가지 않으므로 ..
[백준/Swift] 9935번: 문자열 폭발
·
알고리즘/백준
https://www.acmicpc.net/problem/9935 9935번: 문자열 폭발 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모 www.acmicpc.net 이 문제는 처음에는 쉽게... 문자열 메소드를 사용했다. 그랬더니 45-47에서 시간초과 발생... //시간초과 while word.contains(explosion) && !word.isEmpty { word = word.replacingOccurrences(of: explosion, with: "") } print(word == "" ? "FRULA" : word) 그래서 다시 ..
[백준/Swift] 1141번: 접두사
·
알고리즘/백준
https://www.acmicpc.net/problem/1141 1141번: 접두사 접두사X 집합이란 집합의 어떤 한 단어가, 다른 단어의 접두어가 되지 않는 집합이다. 예를 들어, {hello}, {hello, goodbye, giant, hi}, 비어있는 집합은 모두 접두사X 집합이다. 하지만, {hello, hell}, {giant, www.acmicpc.net 사실 이 문제는 트리 문제를 풀어보기 위해 푼 문제였다. 그런데 도통 트리로는 어떻게 해야 할지 모르겠고 그냥 완탐으로 풀었다... 입력받은 문자열을 앞에서부터 뒤로 순회하면서 hasPrefix 메소드를 통해 이 단어를 접두사로 사용하는지 체크하고 접두사라면 answer에서 차감해 줬다. 왜냐면 부분 집합의 최대 크기를 구하는 게 목표인데..
[백준/Swift] 9372번: 상근이의 여행
·
알고리즘/백준
https://www.acmicpc.net/problem/9372 9372번: 상근이의 여행 첫 번째 줄에는 테스트 케이스의 수 T(T ≤ 100)가 주어지고, 각 테스트 케이스마다 다음과 같은 정보가 주어진다. 첫 번째 줄에는 국가의 수 N(2 ≤ N ≤ 1 000)과 비행기의 종류 M(1 ≤ M ≤ 10 000) 가 www.acmicpc.net 모든 정점이 연결되어 있기 때문에 한 지점에서 시작해도 모든 경로를 갈 수 있다. 그래서 나는 DFS로 1에서 시작해서 쭉 이동하도록 했다. 그리고 그 경로(edge)의 개수를 세면 된다. 좀 보니까 답이 (정점 개수 - 1) 인 것을 알 수 있다!ㅋㅋㅋ 하지만 DFS로 탐색해 봤다~ import Foundation //input let t = Int(read..
[백준/Swift] 12100번: 2048 (easy)
·
알고리즘/백준
https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 이 문제는 2 부분으로 나눌 수 있다. 5 이동 방향 케이스 구하기 이동 구현 처음에는 1번 ~ 5번 움직임을 모두 보려고 했는데 사실 그냥 5번 이동을 봐도 되는 것이다..! 1회 움직이는 것보단 5회 움직이는 게 최댓값이 나올 확률이 높으니까. 그리고 1회에서 최댓값이 나온다고 해도 사실 5회까지 움직이는 건 상관없을 거 같다. 그래서 DFS로 5회를 여러 방향으로..
녕이
'알고리즘' 카테고리의 글 목록