알고리즘
-
프로그래머스 Lv.2) 파일명 정렬알고리즘/프로그래머스 카카오 2020. 5. 26. 22:46
2018 KAKAO BLIND RECRUITMENT [3차] 파일명 정렬 코딩테스트 연습 - [3차] 파일명 정렬 파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램�� programmers.co.kr 풀이 문제를 푸는데 시간이 꽤 걸렸다. 처음에는 head, number, tail 그리고 파일명을 담는 클래스를 만들어, 우선순위큐에 조건에 따라 저장될 수 있게 설정해주었는데, 모든 조건이 같은경우 먼저 들어온 파일이 우선순위가 된다는 조건을 설정할 때, 매우 불안정했다. 그래서 테스트케이스에서 4문제인가 밖에 통과하지 못했다. 그래서 잠깐의 휴식을 취한 뒤에, 직접 조건에..
-
프로그래머스 Lv.2) 방금그곡알고리즘/프로그래머스 카카오 2020. 5. 25. 23:28
2018 KAKAO BLIND RECRUITMENT [3차] 방금그곡 코딩테스트 연습 - [3차] 방금그곡 방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. 그럴 때 네오는 다음 포털의 '방금그곡' 서비스를 이용하곤 한다. 방금그곡에서는 TV, �� programmers.co.kr 풀이 꽤나 까다로운 문제였다. 악보에 사용되는 음이 A,B,C 단순 문자와 함께 올림표가 포함된 C#,D# 이런 문자가 함께 있어서 그런 것 같다.. 다른 분들은 음표를 변형해서 풀었다는 글도 보았고, 쉽게 푸신분도 있다고 하는 것 같은데 나는 그렇지 않았다. 먼저 테스트 케이스에서 계속 실패하던 부분을 살펴보면, 1. 처음 음악의 악보를 저장할 때, 올림표가 포함된 악보 저..
-
프로그래머스 Lv.2) 영어 끝말잇기알고리즘/프로그래머스 2020. 5. 24. 16:43
영어 끝말잇기 코딩테스트 연습 - 영어 끝말잇기 3 [tank, kick, know, wheel, land, dream, mother, robot, tank] [3,3] 5 [hello, observe, effect, take, either, recognize, encourage, ensure, establish, hang, gather, refer, reference, estimate, executive] [0,0] programmers.co.kr 풀이 ArrayList를 이용한 풀이(WordChain 메소드)와 이중 for문을 돌면서 조건 검사(getInfo 메소드) 두 방법으로 풀어봤다. ArrayList도 언뜻 보면 2중 포문 같겠지만, turn과 person을 나눴을 뿐 단일 for문과 같다. ..
-
프로그래머스 Lv.2) 예상 대진표알고리즘/프로그래머스 2020. 5. 22. 22:35
예상 대진표 코딩테스트 연습 - 예상 대진표 △△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N� programmers.co.kr 풀이 이 문제를 2일 전인가 쯤 같이 취준하고있는 형한테 문제를 받았었다. 풀이는 비트 연산을 통해서 경기 수를 구하는 것이었다. 하지만, 내가 비트연산으로 문제를 풀기에는 아직 무리라는 생각이 들어서 나만의 방식으로 풀기로 했다. 궁금하신 분은 여기에서 확인하시면 좋을 것 같습니다. : ) 처음 풀었을 때는 1번과 25번이 시관초과가 떴었다. 그래서 바로 매치를 할 수 있는 경우를 추가시켜주었다. if(left%2 ==1..
-
프로그래머스 Lv.2) 숫자의 표현알고리즘/프로그래머스 2020. 5. 21. 16:51
숫자의 표현 코딩테스트 연습 - 숫자의 표현 Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 programmers.co.kr 풀이 이 문제도 삽질을 조금 한것같다. 수식을 통해 풀어야한다는 압박감에 이것 저것 시도해본 문제였다. 이분탐색을 통해서 풀어보려고도 하고, 점화식을 세워서 풀어보려고도 했는데 코드에서 보시면 알 수 있듯 모두 실패했다.. 시간초과거나 정답이 아닌 경우가 많았기 때문이다. 이 문제도 질문하기 탭을 통해 깨달음을 얻었다. 그냥 완전탐색을 하면 된다는 사실을 알고 허무했다. n이 최대 10000인데 완전탐색하면 효율이 안좋지 않나 생..
-
프로그래머스 Lv.2) 행렬의 곱셈알고리즘/프로그래머스 2020. 5. 21. 16:48
행렬의 곱셈 코딩테스트 연습 - 행렬의 곱셈 [[2, 3, 2], [4, 2, 4], [3, 1, 4]] [[5, 4, 3], [2, 4, 1], [3, 1, 1]] [[22, 22, 11], [36, 28, 18], [29, 20, 14]] programmers.co.kr 풀이 행렬의 곱셈에 대해 배열의 곱셈이라고 이해하고 문제이해를 5분정도 못했다... ㅎㅎㅎㅎ 아무튼 행렬의 곱셈을 구글링해서 곱셈법을 다시 배웠다.. ㅠㅠ 1. 배열 arr1과 arr2를 통해 답이되는 answer 배열을 만들어 준다. 1-1. 이때 크기는 arr1의 행, arr2의 열이 된다. (행렬의 연산 특징) 2. 각각 배열의 idx에 대해 행렬 곱셈식을 구해 더해준다. 코드 class Solution { public int[..
-
프로그래머스 Lv.2) 최댓값과 최솟값알고리즘/프로그래머스 2020. 5. 21. 16:43
최댓값과 최솟값 코딩테스트 연습 - 최댓값과 최솟값 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 (최소값) (최대값)형태의 문자열을 반환하는 함수, solution을 완성하세요. 예를�� programmers.co.kr 풀이 주어진 문자열에서 숫자의 최대값과 최소값을 찾는 문제다. 문자열을 split하는 방법에 대해 알고 있다면 쉬운 문제였다. 이 문제는 두 가지의 방식으로 적었는데, StringTokenizer를 통해 split을 하는 방법과 split 메소드를 통해 하는 방법 두 가지가 떠올랐기 때문이다. 또한, StringTokenizer는 IDE에서만 사용해봤기 때문에 제대로 알고있는지 시험해보기 위해 써봤다. StringTok..
-
프로그래머스 Lv.2) JadenCase 문자열 만들기알고리즘/프로그래머스 2020. 5. 21. 16:10
JadenCase 문자열 만들기 코딩테스트 연습 - JadenCase 문자열 만들기 JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건 programmers.co.kr 풀이 시작하는 단어에 대한 검증, 이후 이어지는 글자들에 대한 검증을 해서 Jaden Case로 바꿔주었다. 하지만 8번만 실패가 뜨길래 뭔가 했다. 결국 이 문제의 질문하기를 들어가보니 마지막에 " "와 같이 띄어쓰기가 주어지는 경우를 체크 해줘야 한다는 것이다. split을 통해 한 단어(?)씩 Jaden Case를 만들어줬고, 마지막 띄어쓰기가 있을거라는 상상도 하지..