목록분류 전체보기 (282)
Hayden's Archive
- 알고리즘 문제의 효율성 : 1. 수행 시간 / 2. 사용한 메모리 / 3. 코드의 길이 - 효율성 중에서 수행 시간이 가장 중요하다. 보통 메모리는 넉넉하므로 걱정할 필요가 없다. 시간 안에 풀었다면 메모리 부족을 겪지 않는다. - 보통 배열이 가장 많은 공간을 사용한다. 배열의 크기가 크면 시간 초과를 받는 경우가 많다. - 불필요한 공간 없으면 보통 공간 복잡도(Space Complexity)는 신경 안 써도 된다. - 시간 복잡도(Time Complexity)를 통해 작성한 코드의 시간을 예상할 수 있다. - 99%의 케이스가 0.01초가 걸린다고 해도 1%의 케이스가 100초가 걸린다면 그 경우 시간 복잡도는 100초가 걸리는 셈이다. - 시간 복잡도를 계산할 때 보통 빅오 표기법(Big O ..
별 찍기는 그냥 규칙성 찾기와 반복문이 전부다. 규칙만 찾고 반복문 코드만 짜면 끝. 알고리즘 문제 출처 : 백준 https://www.acmicpc.net/problem/2523 2523번: 별 찍기 - 13 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다. www.acmicpc.net 내가 작성한 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); for(int i=0; i
알고리즘 문제 출처 : 백준 https://www.acmicpc.net/problem 10951번: A+B - 4 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 내가 작성한 코드 문제를 풀다가 입력이 끝났다는 것을 어떻게 받아야 할지 몰라서 처음에 당황했다. 이런 걸 EOF 처리라고 하는데 자바에서는 어떻게 EOF를 처리하는지 서치해보았고 https://mygumi.tistory.com/236 를 참고하여 코드를 작성했다. 자바에서는 입력값에 대하여 EOF 처리를 할 때 Scanner 참조변수의 hasNextInt() 메소드를 활용할 수 있다. 자바의 EOF 처리를 기억하기 위해 코드를 포스팅한다. import java.util.Scanner; ..
현재 프로그래머스 알고리즘 문제를 따로 풀고 있지만 백준 알고리즘 문제는 처음으로 풀어보았다. 프로그래머스는 기본적인 코드의 폼을 제공하지만 백준은 빈 화면만 제공한다. 그래서 처음에 계속 컴파일 에러 뜨길래 이유를 알 수 없어서 서치해봤더니 클래스 이름을 Main으로 해야 작동한다고 한다.(이건 정올도 마찬가지) 백준의 문제를 처음부터 단계별로 조금 풀었는데 기초적인 문제는 제외하고 기억에 남는 문제 위주로 포스팅하겠다. 알람 시계 알고리즘 문제 출처 : 백준 https://www.acmicpc.net/problem/2884 2884번: 알람 시계 문제 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상..
알고리즘 문제 출처 : 프로그래머스 https://programmers.co.kr/learn/courses/30/lessons/12924 코딩테스트 연습 - 숫자의 표현 Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 programmers.co.kr 내가 작성한 코드 i부터 j까지의 합을 1부터 j까지의 합에서 1부터 i-1까지의 합을 빼는 것으로 구할 수 있는 것을 활용해서 코드를 짰다. 예시로 나온 7+8=15라는 점에서 생각해서 j의 최댓값은 n의 절반보다 1이 더 크게, i의 최댓값은 n의 절반만큼으로 정하고 반복문을 돌렸는데 정확도는 곧바로 통..
알고리즘 문제 출처 : 프로그래머스 https://programmers.co.kr/learn/courses/30/lessons/12945 코딩테스트 연습 - 피보나치 수 피보나치 수는 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 내가 작성한 코드 처음에 이 문제를 접하고 무슨 이렇게 쉬운 문제가 다 있나 만만하게 보다가 큰코를 다칠 뻔했다. 프로그래머스에서 돌렸다가 에러가 떠서 ..
알고리즘 문제 출처 : 프로그래머스 https://programmers.co.kr/learn/courses/30/lessons/17681 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다 programmers.co.kr 내가 작성한 코드 카카오 신입 공채 1차 코딩 테스트 문제로 난이도 하의 81.78%의 정답률을 보이는 문제인데 나는 고전했다... 코드를 짜다보니 코드가 엄청 길어졌고 2를 나눈 몫과 나머지를 계속 쌓아서 코드를 짰었는데 시간 복잡도에서 계속 막혔다. 고민하다가 꼭 2진수로 바꾸지 않아도 된다는 아이디어를 얻게 되었다..
알고리즘 문제 출처 : 프로그래머스 https://programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번� programmers.co.kr 내가 작성한 코드 자바에서 배열이 고지식하고 융통성이 없어서 좋아하지 않았는데 성능 측면에서는 ArrayList보다 배열이 더 빠르다고 하여 배열에 정을 붙이려고 노력하고 있다. 라이브러리도 곧잘 활용했지만 라이브러리 또한 무분별하게 사용하면 속도가 느려진다고 이야기가 들었다. 라이브러리는 편하지만 뭐든 적절하게 활용해야 하고..
알고리즘 문제 출처 : 프로그래머스 https://programmers.co.kr/learn/courses/30/lessons/12926 코딩테스트 연습 - 시저 암호 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 AB는 1만큼 밀면 BC가 되고, 3만큼 밀면 DE가 됩니다. z는 1만큼 밀면 a가 programmers.co.kr 내가 작성한 코드 아스키코드 숫자값을 활용하여 문제를 풀었다. 아스키코드에서 대문자는 65~90, 소문자는 97~122의 값을 가지는데 들어오는 문자열을 char[] 배열로 변환하여 각각의 문자를 정수로 변환하여 조건문으로 분류한다. 공백은 아스키코드로 0이므로 0일 때는 그냥 지나가게 하고 알파벳일 경우..
알고리즘 문제 출처 : 프로그래머스 https://programmers.co.kr/learn/courses/30/lessons/12921 코딩테스트 연습 - 소수 찾기 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상 programmers.co.kr 내가 작성한 코드(효율성 때문에 여러번 코드를 짰던 문제) 좀처럼 풀이가 생각이 안나서 일단 반복문으로 돌렸다. 자기자신과 같지 않은 수로 나누었을 때 나누어떨어지는 수를 구한 후 집계하고 조금이라도 속도를 빠르게 하기 위해 바로 반복문을 break 시켰다. class Solution { public ..