일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 개발자취업
- 예외 처리
- 99클럽
- 예외
- 코딩테스트준비
- til
- 로켓펀치 #취준컴퍼니 #취업 #일상 #취준생
- throws 키워드
- 다중 catch 블록
- 예외클래스
- 항해99
- try-catch-finally 블록
- 실행 예외
- 일반 예외
- Today
- Total
목록코딩 테스트/코테 문제 풀이 (10)
innn
1. 배열 d에 있는 숫자들(요소들)을 오름차순으로 정렬한다. 2. 배열 앞에서부터 순서대로 더해가면서 budget 을 초과하지 않는 최대 개수의 숫자들을 찾는다. 아래는 한 줄 한 줄 해석. function solution(d, budget) { // 함수 solution은 배열 d와 숫자 budget을 받는다. let answer = 0; // 최대 개수를 나타내는 변수 answer을 0으로 초기화한다. let money = 0; // 현재까지의 예산 사용 금액을 나타내는 변수 money를 0으로 초기화 한다. d.sort((a, b) => a - b) // 배열 d을 오름차순으로 정렬한다. .forEach(function (val) { // 정렬된 배열에서 각각의 요소 val에 대해 다음의 함수를 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bpufmN/btrNyE4lRDX/LbrKrTOdznmcdws3IPh7U1/img.png)
https://www.acmicpc.net/problem/3053 3053번: 택시 기하학 첫째 줄에는 유클리드 기하학에서 반지름이 R인 원의 넓이를, 둘째 줄에는 택시 기하학에서 반지름이 R인 원의 넓이를 출력한다. 정답과의 오차는 0.0001까지 허용한다. www.acmicpc.net 내용이 블라 블라 많은데, 예제 입력으로 출력해야할 공식을 유추했다. 유클리드 기하학은 우리가 알고 있는 공식 r^2*(파이) 택시 기하학은 예제 출력에서 유추한 결과 r^2*2.0000000 이었다. 단순히 유클리드와 택시 기하학으로 원 값 구할 때 필요한 변수 두 개를 선언해주고 출력만 하면 되는 문제 내가 여기서 배운 지점은 두개다. 1. pi를 3.14159 이런식으로 쓰지 않고 import math 로 모듈을 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/xZ1Pg/btrMUjfjWaw/wdsHkz5KaPzavW1uG9uOQ1/img.png)
문제 003. 구간 합 구하기 수 N개가 주어졌을때 i 번째 수에서 j 번째 수까지의 합을 구하는 프로그램을 작성하시오. 입력 1번째 줄에 수의 개수 N(1
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/o7qb6/btrMVtBeJ9i/EGsXxj5Q5EKDE63H0K7bo0/img.png)
구간 합은 합 배열을 이용하여 시간 복잡도를 더 줄이기 위해 사용하는 특수한 목적의 알고리즘이다. 코테에서 사용 빈도가 높아 꼭 알아두어야 한다고 했다. 구간 합의 핵심 이론 구간 합 알고리즘을 활용하려면 먼저 합 배열을 구해야 한다. 배열 A가 있을 때 합 배열 S는 다음과 같이 정의한다. 합 배열 S 정의 S [i] = A [0] + A [1] + A [2] + ... + A [i-1] + A [i] // A [0]부터 A [i]까지의 합 합 배열은 기존의 배열을 전처리한 배열이라고 생각하면 된다. 이렇게 합 배열을 미리 구놓으면 기존 배열의 일정 범위의 합을 구하는 시간 복잡도가 O(N)에서 O(1)로 감소한다. 아래의 그림을 통해 합 배열을 좀더 자세히 설명해보자. A [i] 부터 A[j] 까지의..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dhOb15/btrMZCYceb8/3k3KLh9t6Ul4fOVkNA7fN1/img.png)
비교적 간단한 문제. 문제에 주어진 내용을 프로그래밍 해서 그 문제에 요구한 내용을 잘 이해하고 프로그래밍을 했느냐 를 본 문제다. 간단한 문제인데, ArithmeticException 에러의 뜻도 발견한 시간이었다. (이 에러의 뜻은 마지막 문단의 빨간줄만 보심 됩니다. 결론부터 말하자면, 특정 변수의 값이 0으로 초기화된 채 그대로 나누기 된 것입니다!) 문제 002. 평균 구하기 세준이는 기말고사를 망쳤다. 그래서 점수를 조작해 집에 가져가기로 결심했다. 일단 세준이는 자기 점수 중 최댓값을 골랐다. 그런 다음 최댓값을 M이라 할 때 모든 점수를 점수/M*100으로 고쳤다. 예를 들어 세준이의 최고점이 70점, 수학 점수가 50점이라면 수학 점수는 50/70*100이므로 71.43점이다. 세준이의 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/tjcQO/btrMU51oNIK/PgNZ8dKGOjC3KkJDo0FX10/img.png)
자료구조는 데이터를 효율적으로 저장, 접근, 수정하기 위한 그릇이다. 코테에서는 각 문제에 주어진 입력 데이터의 형태와 사용해야 하는 알고리즘에 따라 적절한 자료구조를 선정해 사용하는 것이 매우 중요하다. 배열과 리스트 기본 자료구조인 배열과 리스트는 비슷하지만 다르 점도 많다. 두 자료구조의 특징을 정확하게 이해하고 문제가 요구하는 조건에 따라 적절하게 선택해 사용하는 것이 중요하다. 배열과 리스트의 핵심 이론 배열 배열은 메모리의 연속 공간에 값이 채워져 있는 형태의 자료구조이다. 배열의 값은 인덱스를 통해 참조할 수 있으며, 선언한 자료형의 값만 저장할 수 있다. 아래 그림은 배열을 나타낸 것이다. 그림을 보면 배열에 값 1, 값 2, ... 값 6이 채워져 있고, 각 값은 0부터 5까지 인덱스가 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bwD2KU/btrMId0baDQ/6qsB07MMoJvSGOsJXD4oX0/img.png)
코테를 진행하며 실수하기 쉬운 4가지 오류 찾아보기 구간 합 관련 코드이다. 언뜻 보면 문제가 없는 것 같지만 이 코드에는 실수하기 쉬운 4가지 오류가 숨어져 있다. 실제 코테에 입력할 코드와 비교하면 짧고 단순한 코드이다. 눈으로 오류를 금방 찾았을 수도 있다. 하지만 코테는 이보다 복잡한 알고리즘 로직이 필요하며, 코드의 길이도 길어서 논리 오류를 눈으로 찾기 어렵다. 디버깅으로 논리 오류를 찾아보자. 오류 1. 변수 초기화 오류 찾아보기 1번째 오류는 변수 초기화 로직에서 초기화를 제대로 하지 않은 경우이다. 다음 화면에서 변숫값 기능을 보여주는 Variables 탭을 보자. Variables 탭의 t가 2이므로 2번째 테스트 케이스를 진행하는 중이라는 것을 알 수 있다. 그리고 중단점은 20번째 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/biKZiK/btrMJsPeSR2/EDAVfEEiGoJnAIR2TB9wlK/img.png)
코드의 논리 오류를 어떻게 잡을까? - 가장 뛰어난 오류 탐색 방법, 디버깅 코드에서 논리 오류를 찾아내지 못해 코테를 통과하지 못하는 안타까운 경우가 많다고 한다. (나의 경우에서도 자판기를 만드는 코테에서 논리적 오류가 있었다. 문제를 복기하면서 뒤늦게 알아차렸다..) 이러한 상황에서 논리 오류를 찾을 수 있는 최선의 방법은 '디버깅'이라고 한다. 이 디버깅에 대해 알아보자. 프로그램에서 발생하는 문법 오류나 논리 오류를 찾아 바로잡는 과정을 디버깅debugging이라고 한다. 문법 오류는 컴파일러가 자동으로 찾아 주므로 테스트할 때 문제가 되지 않는다. 논리 오류는 코드가 사용자의 의도와 다르게 동작하는 것이며 다양한 형태로 발생한다. 디버깅의 중요성 코테 응시자의 경우 이런 말이 많이 있다. 학생..