자바
-
프로그래머스 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) 피보나치 수알고리즘/프로그래머스 2020. 5. 21. 16:36
피보나치 수 코딩테스트 연습 - 피보나치 수 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다. 예를들어 F(2) = F(0) + F(1) = 0 + 1 = 1 F(3) = F(1) + F(2) = 1 + 1 = 2 F(4) = F(2) + F(3) = 1 + 2 = 3 F(5) = F(3) + F(4) = programmers.co.kr 풀이 피보나치를 배열을 통해 푸는 방법과, 1234567로 나눈 나머지 값을 저장 및 return한다는 것 이외는 특별하게 신경써야하는 부분이 없다. 혹시 피보나치를 구현하는데 어려움을 겪는 분이 있다면, 피보나치를 배열로 풀기 전에 재귀를 통해 푸는 방법을 먼저 익히는 것을 ..
-
프로그래머스 Lv.2) 올바른 괄호 짝지어 제거하기알고리즘/프로그래머스 2020. 5. 21. 16:23
올바른 괄호 짝지어 제거하기 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr 풀이 로직을 바꿔가며 세 번 시도한 문제다. 첫번째는 StringBuffer에 주어진 String을 두고, 겹치는 부분을 계속해서 지워나가고 StringBuffer의 길이가 0이면 1, 아니면 0을 리턴해주었는데, 역시나 시간초과가 떴다. 두번째로 시도한 로직은 먼저 String을 돌면서 연속되는 글자가 있는 두 index를 LinkedList에 넣어주었다. LinkedList를 돌면서 카운팅을 해주었고, 해당 문자를 제..
-
프로그래머스 Lv.2) N개의 최소공배수알고리즘/프로그래머스 2020. 5. 21. 16:15
N개의 최소공배수 코딩테스트 연습 - N개의 최소공배수 두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배�� programmers.co.kr 풀이 이 문제는 인터넷 검색을 통해 최대 공약수, 최소 공배수를 구하는 알고리즘을 찾았다. 평소같으면 몰라도 푸는 연습을 했겠지만, 이 문제는 찾고 이해하는게 더 좋다고 판단했기 때문이다. 분명 학부생 때는 이 알고리즘을 구현 했었다. 지금은 까먹었다는게 문제지만.. 아무튼 다시 한번 머리에 각인 시키는 계기가 되었으면 한다. 1. for문을 돌면서 최소공배수를 구한다. 2. 최소공배수는 두 숫자의..
-
프로그래머스 Lv.2) JadenCase 문자열 만들기알고리즘/프로그래머스 2020. 5. 21. 16:10
JadenCase 문자열 만들기 코딩테스트 연습 - JadenCase 문자열 만들기 JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건 programmers.co.kr 풀이 시작하는 단어에 대한 검증, 이후 이어지는 글자들에 대한 검증을 해서 Jaden Case로 바꿔주었다. 하지만 8번만 실패가 뜨길래 뭔가 했다. 결국 이 문제의 질문하기를 들어가보니 마지막에 " "와 같이 띄어쓰기가 주어지는 경우를 체크 해줘야 한다는 것이다. split을 통해 한 단어(?)씩 Jaden Case를 만들어줬고, 마지막 띄어쓰기가 있을거라는 상상도 하지..