본문 바로가기

반응형

분류 전체보기

(102)
[프로그래머스] 2019 Kakao Winter Internship - 튜플 코딩테스트 연습 - 튜플 "{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1] programmers.co.kr 입력 & 출력 문제는 링크에서 확인바랍니다 풀이 1. 괄호를 제거하며 집합을 구한다 2. 집합 안의 ,를 기준으로 수를 구한다 3. 구한 수를 배열에 넣는다 3.1 이미 있는 수일 경우 넣지 않는다 Swift 전체 코드 코드 가독성 개선 전 var value = s var array : [Int] = [] value.removeFirst(2) value.removeLast(2) let pieces = value..
비트마스킹 (bitmasking) 알고리즘 문제를 풀다가 나온 물음표.. 배열로 잘 풀었는데 시간 초과가 나왔다 (심지어 반복문 하나) 흠터레스팅 중 알고리즘 분류에 비트마스킹이 적혀있었다 비트마스킹 분명 학교에서 배웠는데 기억이 가물하다ㅜ 비트는 1과 0으로 구성되었고 비트마스킹은 이 비트를 서로 비교, 연산하는 작업이다 이진수 기법은 알아보기 어려운데 왜 쓰느냐? 아주 간단하게 말하면 배열보다 매우 빠른 수행시간, 더 적은 메모리 사용이 가능하기 때문이다 배열간의 원소를 비교할 때 주로 contain을 사용했는데 비트마스킹은 익숙한 논리연산자를 사용한다 a & b = 값이 같으면 1, 다르면 0 a | b = 값이 같으면 0, 다르면 1 a ^ b = XOR 연산으로 값이 같으면 0, 다르면 1 ~a = NOT 연산으로 값 전환 (1..
[백준] 14920번 3N + 1 수열 14920번: 3n+1 수열 다음의 점화식에 의해 정해지는 수열 C(n)을 생각하자: C(n+1) = C(n)/2 (C(n)이 짝수일 때) = 3*C(n)+1 (C(n)이 홀수일 때) 초항 C(1)이 자연수로 주어지면, 이 점화식은 자연수로 이루어지는 수열을 정한다. www.acmicpc.net 입력 & 출력 다음 점화식에 의해 정해지는 수열 C(n)을 생각하자 C(n+1) = C(n)/2 (C(n)이 짝수일 때) = 3*C(n)+1 (C(n)이 홀수일 때) 풀이 점화식을 그대로 사용하면 된다 배열의 현재 값이 1이 아니면 점화식을 반복한다 Swift 전체 코드 let c1 = Int(readLine()!)! var cArray : [Int] = [c1] var i = 0 while cArray[i] !..
[LeetCode] 79. Word Search Word Search - 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 입력 & 출력 m x n 크기의 배열에 문자가 들어있다. 문자열이 주어졌을 때 문자들이 연결되어있다면 true를, 아니라면 false를 반환해라. 풀이 이중 포문을 돌려 문자열 첫번째와 같은 문자를 찾아내, 이어지는 문자가 원하는 문자인지 확인한다 양 옆과 위 아래 모두 확인해야한다 i와 j 오버플러우에 주의하자 방문 유무를 카운팅으로 판별하다 끊임없는 오류로 Bool로 바꾸었더니 원활하게 ..
[백준] DP - 11726번 2xN 타일링 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 입력 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 출력 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 풀이 2 * 1 = 1 2 * 2 = 2 2 * 3 = 3 2 * 4 = 5 가로가 0개인 경우 ㅁㅁㅁㅁ = 1 가로가 1개인 경우 ㅁㅁ-- = 3 가로가 2개인 경우 ---- = 1 2 * 5 = 8 가로가 0개인 경우 ㅁㅁㅁㅁㅁ = 1 가로가 1개인 경우 ㅁㅁㅁ-- = 4 가로가 ..
[프로그래머스] 힙 - 디스크 컨트롤러 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr 입력 각 작업에 대해 작업이 요청되는 시점, 작업의 소요시간을 담은 2차원 배열 jobs가 매개변수로 주어집니다 출력 작업의 요청부터 종료까지 걸린 시간의 평균을 가장 줄이는 방법으로 처리하면 평균이 얼마가 되는지 return 하도록 solution 함수를 작성해주세요 풀이 각 작업의 작업시간을 기준으로 정렬을 한다 이 점을 유의해야하는데 작업은 작업시간이 적더라도 시작할 수 있는 시간이 다른 작업보다 늦다면 후에 처리한다 요청시간이 현재 타이머보다 높다면..
[프로그래머스] 스택/큐 - 프린터 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr 입력 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다. 그렇지 않으면 J를 인쇄합니다. 출력 인쇄를 요청한 문서가 몇 번째로 인쇄되는지 return 하도록 solution 함수를 작성해주세요 풀이 중요도와 문서를 함께 구분하기 위해 튜플을 사용해서 풀었다 이 문제의 함정은 for문을 사용해서 풀시, index값에 주의해야하는 점이다 큐..
[프로그래머스] 2021 Kakao Blind Recruitment - 합승 택시 요금 코딩테스트 연습 - 합승 택시 요금 6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4 programmers.co.kr 입력 & 출력 문제는 링크에서 확인바랍니다 풀이 S에서 시작해, A와 B를 공통으로 거쳐 각 지점까지 도착하는 최소값을 구해야한다 첫째로 생각난 방법은 A와 B를 가는 길을 모두 구하는..

반응형