본문 바로가기
728x90

코딩테스트205

[2020 KAKAO BLIND RECRUITMENT] 괄호 변환 - JAVA https://school.programmers.co.kr/learn/courses/30/lessons/60058 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제는 이해하는데 오래 걸려서 문제 설명을 좀 자세하게 써보려고 한다 우선 문제에서의 용어와 정의를 정리해보자 균형잡힌 괄호 문자열 : ( 와 ) 의 개수만 같으면 된다 올바른 문자열 : ( 와 ) 의 짝이 맞는다 문제에서 주어지는 문자열은 균형 잡힌 문자열이고, 이를 올바른 괄호 문자열로 변환하는 것이 핵심이다! 이를 변환하는 방법은 문제에서 주어진다 변환 방법 요건 그냥 빈 문자열이면 고대.. 2022. 10. 11.
[백준] 10825번 - 국영수 https://www.acmicpc.net/problem/10825 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1 www.acmicpc.net 정렬 문제였다 Arrays.sort() 메서드와 new Comparator을 사용하고 compare 함수를 오버라이딩해서 사용했다 자바 코드) package boj; import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; public class boj10825 { public static .. 2022. 9. 29.
[백준] 11650번 - 좌표 정렬하기 https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 이 문제는 2차원 배열 정렬만 신경쓰면 되었따 Arrays.sort(arr, (o1, o2) -> { if(o1[0] == o2[0]) { return o1[1]-o2[1]; } else { return o1[0]-o2[0]; } }); 우선 첫번째 좌표가 같으면 두번째 좌표 기준으로 정렬하기 떄문에 위와 같이 구현했다 자바 코드) packag.. 2022. 9. 28.
[BOJ] 2751번 - 수 정렬하기 2 https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 이 문제는 Arrays.sort() 로 하면 시간 초과가 발생한다 Arrays.sort()는 primitive arrays에 대해 Dual-Pivot Quicksort를 수행한다 이는 평균 시간복잡도가 O(nlogn)이지만 최악의 경우 시간복잡도는 O(n^2) 가 된다 따라서 이 문제에서는 O(n^2)를 못하게 해서 시간 초과가 발생한다ㅠ 그래서 나는 2가지의 방식으로 성능을 개선했다!.. 2022. 9. 28.
[백준] 1451. 직사각형으로 나누기 - JAVA https://www.acmicpc.net/problem/1451 1451번: 직사각형으로 나누기 첫째 줄에 직사각형의 세로 크기 N과 가로 크기 M이 주어진다. 둘째 줄부터 직사각형에 들어가는 수가 가장 윗 줄부터 한 줄에 하나씩 M개의 수가 주어진다. N과 M은 50보다 작거나 같은 자연수이 www.acmicpc.net 와 이 문제 푸는데 거의 2시간 걸린듯,,, 왜이렇게 어렵지,,, 어렵다기보다 사각형 넓이 구하는 과정이 헷갈림 인덱스들 맞추는거,,,ㅠㅠ 암튼 참고한 블로그 내용을 설명해보겠다 직사각형을 나누는 방법 3개의 직사각형으로 나눌 수 있는 경우의 수는 위의 6가지가 전부이다 그래서 그냥 다 구해보는 수 밖에 없다~ 직사각형의 합을 구하는 방법 이걸로는 미리 sum 배열을 만들어둔다 해당 .. 2022. 9. 26.
[월간 코드 챌린지 시즌1] 3진법 뒤집기 https://school.programmers.co.kr/learn/courses/30/lessons/68935 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 여기서는 어려운 문제는 아니었으나 Integer.parseInt 메소드를 알게 되었다! 우선 3진법으로 바꾸고 뒤집는 과정이 있어야 하는데 진법 변환 특성 상 이는 쉽게 구현이 가능하다 보통 진법 변환 시 나누기를 진행하고 그 나머지들을 아래서부터 쓰는데 이를 그냥 반복문을 돌리고 그 때마다 나오는 나머지를 String 뒤로 쭉쭉 붙여주면 알아서 뒤집혀져 있는 것이다! 그리고 Integer.par.. 2022. 9. 21.
728x90