본문 바로가기
728x90
반응형

공부32

백준 1085 직사각형에서 탈출(Java) https://www.acmicpc.net/problem/1085 문제출처 제한 에서 모든 예외처리가 되어있어서 사실 생각할 게 많지 않다. 가로 x, 세로 y짜리 직사각형의 변에 닿을 직선거리는 가로 측면에서는 y축에 닿는 w, y축과 평행하는 변에 닿을 (x-w) 세로 측면에서는 x축에 닿는 h, x축과 평행하는 변에 닿을 (y-h) 이 4개 중 가장 짧은 거리를 Math.min()으로 비교하면 되는데 역시 토너먼트가 깔끔하다. 가로 2개끼리, 세로 2개끼리 비교하면 끝 import java.io.*; import java.util.*; public class Main{ public static void main(String[] args) throws Exception{ BufferedReader b.. 2022. 1. 3. 18:45
백준 1065 한수 (Java) - 로지컬한 케이스 분리는 언제나 중요하다 문제 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다. 출력 첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다. 1보다 크거나 같고, 입력받은 수 자기 자신까지 정수 각 자리가 등차수열을 이루는 숫자를 체크하는데 1의자리, 10의자리 숫자는 당연히 여기에 모두 포함된다. 뺄 게 어딨다고? 그리고 1000의 경우에는 함정카드다. 1-0 = 1 , 0-0=0 으로 등차수열이 성립하지 않는다. 그러니 사실상 100부터 999.. 2021. 11. 10. 22:10
백준 4673 셀프넘버 (Java) 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다. 예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런식으로 다음과 같은 수열을 만들 수 있다. 33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, 141, ... n을 d(n)의 생성자라고 한.. 2021. 11. 10. 18:44
백준 10950 A+B 주어진 개수만큼 반복 출력하기 (Java) 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10) 각 테스트 케이스마다 A+B를 출력한다. 각 테스트 케이스마다 가 중요한 포인트. import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int t = sc.nextInt(); int[] answer = new int[t]; //합 담을 사이즈만큼 배열 칸수 늘려놓기 for (int i = 0 ; i < t ; i++){ //사.. 2021. 11. 5. 00:23
백준 2588 곱셈 손계산 구현하기 (Java) (세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다. (1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오. 첫번째 수를 a, 두번째 수를 b라고 하면 b = 100x + 10y + z 꼴로 분해가 가능하다. 그리고 a*b = a * 100x + a * 10y + a * z 로 분리하여 생각할 수 있고, 문제의 의도는 (3) a*z (4) a*10y (5) a*100x (6) a*b (최종결과) 를 분리하여 출력하는 것에 있다. 두 정수 a, b 를 입력받았고 z = b % 10 385 % 10 하면 385를 10으로 나눈 나머지 5가 출력된다. y = b % 100 / 10 385 %100 하면 .. 2021. 11. 3. 23:19
백준 10171 고양이 출력하기 (Java) : 이스케이프 문자 https://www.acmicpc.net/problem/10171 10171번: 고양이 아래 예제와 같이 고양이를 출력하시오. www.acmicpc.net public class Main{ public static void main(String[] args){ System.out.println("\\ /\\"); System.out.println(" ) ( ')"); System.out.println("( / )"); System.out.println(" \\(__)|"); } } println하면 그다음 출력때 알아서 개행이 되고 \ 를 출력하려면 \\ 로 이스케이프 문자를 사용해야 한다는게 이 문제의 포인트 아 누가보면 비웃어도 할말은 없는데 나 정말 한번도 시험을 본 적이 없어서... 기초문제들만.. 2021. 10. 30. 21:31
코딩테스트 카테고리를 신설했습니다. 코딩테스트를 한번도 준비해본적이 없는 입장에서(.....) 문제 유형과 많이 사용되는 사이트/ide들에 적응해야 할 필요가 느껴진다. 아무리 찾아봐도 어느정도 기초가 있는 사람들에게 맞는 어려운 강의들은 많은데 나같이 언어 써보고 개발만 해봤지 전공지식이 부족하고 테스트 자체를 처음 준비 시작하는 사람들에게는 참고할만한 게 생각보다 별로 없는 것 같아서 카테고리를 파게 되었다. 기초 강의도 많고, 어려운 문제들 푸는 강의도 많은데 중간이 없는 느낌이라 해야하나? 내가 못찾아서 못한건가? 처음 코딩테스트를 준비하는, 비전공자 시선에서 시작해보는 카테고리 아, 코딩테스트도 안쳐본 비전공자가 지금 회사 어떻게 입사했냐고? 라떼는 코딩테스트 있는 회사가 훨씬 적었다ㅠㅠ 개발 직무가 아닌 기획을 비롯한, 원래 전.. 2021. 10. 30. 20:26
SQL 튜닝과 Table Access SQL 튜닝을 왜 해야 할까요 그러면? 사실 그렇잖아요, 뼈빠지게 쿼리를 열심히 짰는데.. 튜닝까지 해야 한다고? 랜덤I/O로 인한 비효율을 최소화하기 위해 필요합니다. 그러려면 어제 길게길게 설명한 인덱스 스캔 방식도 중요하지만, 이게 만능은 또 아니란 말이지요. 알면 알 수록 알아야할 게 많아지는 건 어디나 마찬가지고 여기도 예외가 없다 이겁니다.. 그래서 테이블을 어떻게 액세스해서 찾아들어가는지에 대해서도 알아야 합니다. SQL 조건에서 참조하는 칼럼을 인덱스가 모두 포함하지 않는다면, 인덱스 스캔 후에 테이블을 반드시 한번 더 읽어야 합니다. 스캔을 통해 조건에 맞는 소량의 데이터를 빨리 찾아내요. 근데 그 데이터를 ROWID로 찾는다 말이죠? ROWID는 테이블 레코드를 찾기 위한 주소값이에요... 2021. 9. 1. 19:01
SQL 튜닝에 꼭 필요한 옵티마이저와 실행계획 시즌3 Intro. 튜닝의 ㅌ도 몰랐던 비컴공 개발자였던 2020년 가을의 나, 팀내 개선 프로젝트로 우리 팀/회사에서 가장 유명하고 현장 사용 빈도가 높은 화면의 HeavyTR을 줄이기 위해 튜닝을 갑자기 배워야 하는 처지가 되는데.... 때맞춰 신청한 외부 교육(어차피 고과 산정에 교육이 필요한 참에, 필요한 걸 들으면 가장 좋잖아?) 3일 + [친절한 SQL 튜닝] / [실전사례로 알아보는 SQL 튜닝] 2권의 책(기억은 잘 안 나는데 둘 중 하나는 교육 교재였던걸로 기억하고, 하나는 내돈내산) + 미친듯한 구글링이 큰 도움이 되었다. 튜닝을 이해하기 위해서는 맨 처음 2가지 개념을 알고 넘어가야 합니다. 1. 옵티마이저 : 사용자가 원하는 작업을 가장 효율적으로 수행할 수 있도록 최적의 데이터 액.. 2021. 8. 30. 19:13
728x90
반응형