일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 |
- 해시
- Spring
- SQL
- Spring Framework
- 코딩테스트
- 자바의 정석(기초편)
- Programming
- 소프티어
- java.lang 패키지
- StringTokenizer
- thinking differently
- 티스토리챌린지
- 영어원서
- 프로그래머스
- 알고리즘
- JavaScript
- Java
- 반복문
- 백준
- programmers
- BFS
- Steve Jobs
- MySQL
- 오블완
- nextInt
- Computer Science
- softeer
- Python
- Java script
- 관계형 데이터베이스
- Today
- Total
목록softeer (10)
도라에몽 개발자

문제는 다음과 같다.출처: https://softeer.ai/practice/6269 조작법 앞뒤로 다른 버튼 조작이 있어도 비밀 메뉴로 인정된다는 조건과 버튼은 1이상 9이하라는 조건이 주어졌기 때문에 문자열들을 contains(String key) 메서드를 활용하여 비교하여 결과를 도출해내는 방식으로 풀어냈다.참고자료: https://www.w3schools.com/java/ref_string_contains.asp import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedRea..

문제는 다음과 같다. 2차원 배열의 특정 열을 기준으로 적절히 정렬하면 꽤 간단하게 풀 수 있는 문제였다.수업 종료시간이 빠를 수록 이후에 여러개의 수업들을 추가할 수 있기 때문에, 수업 종료시간을 기준으로 오름차순 정렬하여 처리했다. 그리고 반복문을 순회할 때 이전 수업 종료시간보다 다음 수업 시작시간이 크거나 같아서 추가할 수 있다면 이전 수업종료시간을 다음 수업의 종료시간으로 업데이트해줬다. 시간이 엇갈려서 수업을 듣지 못한다면, 기존 초기값 그대로 유지된다. 추가된 수업들의 갯수를 카운트하여 총 갯수를 반환해주었고, 전체 테스트에 통과했다.import java.io.*;import java.util.*;public class Main { public static void main(Strin..
문제는 저작권 문제로 소프티어 홈페이지에서 직접 확인이 필요하다.https://softeer.ai/practice/7628 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai 의외로 입출력과 정렬, 배열, 반복문 정도만 활용하면 꽤 간단히 풀리는 문제였다.각 집의 난로 반지름 값은 배열에 저장하여 활용하였고, 집집마다 가지고 있는 난로의 반지름이 연탄 반지름의 배수인 집들을 카운트하여 cnt 변수에 할당했다. 그리고 반복문이 순회할 때마다 이전 cnt 값과 비교하여 가장 많은 난로의 개수를 찾아냈다.import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws I..

문제는 다음과 같다. 입출력과 조건비교만 잘 처리하면 간단하게 풀 수 있는 문제였다.Scanner와 BufferedReader & StringTokenizer를 각각 활용하여 실행했을 때 실행시간 및 메모리를 비교해보았다.지난 글 참고: 2023.12.06 - [ALGORITHM/백준(BAEKJOON)] - 백준(BAEKJOON) - 15552번: 빠른 A+B (Java) *** Buffer 우선 Scanner를 활용하여 입력을 했을 때의 결과는 다음과 같다.- 실행시간: 0.136 sec- 메모리: 11.93 MBimport java.io.*;import java.util.*;public class Main { public static void main(String[] args) { ..

문제는 다음과 같다. 처음에는 돌의 높이들의 최소값과 인덱스를 찾아서, 이후에 오는 값들을 서로 비교해가며 순차적으로 증가하는 값들의 개수를 확인하고자 했다. 하지만 7개의 테스트만 통과하고 나머지는 실패하는 결과를 얻었다.아마 돌의 높이들 중에서 최소값을 찾고, 그 최소값의 인덱스를 찾고, 또 다시 반복문을 순회하며 밟은 돌의 개수의 최대값을 찾아가는 과정에서 여러차례 for문이 사용되었고 시간 초과가 발생했을 것으로 예상된다. import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new Bu..

문제는 다음과 같다. 이번에는 Scanner 대신 split 처리하지 않고도 공백문자를 기준으로 파싱하여 문자열을 저장할 수 있는 기능을 활용해봤다.그리고 매 입력마다 구간 내 성적을 합산하지 않고, 미리 합산결과를 선언 및 초기화해두고 활용해봤다. 예를 들어, 5명의 학생의 성적을 입력 받았다면... 학생들의 점수 합계를 저장하기 위한 정수 배열 sumOfScores를 선언 및 초기화했다. (편의상 index를 1로 시작)학생들의 점수가 저장된 정수 배열이 scores라고 생각하고 합계를 계산해보면 다음과 같다.- sumOfScores[1] = scores[0]- sumOfScores[2] = sumOfScores[1] + scores[1]- sumOfScores[3] = sumOfScores[2]..
저작권 문제로 인해 문제의 상세 내용은 홈페이지에서 참고 가능하다.나무심기 문제: https://softeer.ai/practice/7353 주의할 사항은 토양의 비옥함이 음수인 경우, 음수 * 음수는 양수이므로 각 토양의 비옥함은 음수이더라도 두 개의 음수 비옥함을 곱한 최대값이 양수로써 결과로 반환된다는 것이다. 음수든 양수든 우선 오름차순으로 정렬해두고 가장 작은 수으로 지정된 두 개 요소의 곱한 값과 가장 큰 수로 지정된 두 개 요소의 곱한 값을 비교하면 결국 최대값을 찾을 수 있다는 원리를 이용하여 문제를 풀어냈다.import java.io.*;import java.util.*;public class Main { public static void main(String[] args) { ..

문제는 다음과 같다. 알고보니 Arrays.equals()를 활용하여 배열의 요소를 비교하는 간단한 문제였는데, 처음에는 너무 복잡하게 돌아갔다.테스트는 전체 통과했으나, 너무 복잡해서 정석적인(?) 방법으로 다시 풀어봤다.Arrays.equals 관련 참고 자료: https://docs.oracle.com/javase/8/docs/api/index.html우선 처음 접근했던 방식은 아래의 코드와 같다.- Queue 클래스를 활용하여 숫자 요소들을 앞뒤로 비교했다. 이 때 Ascending의 패턴이면 1로 설정하고 Descending의 패턴이면 -1으로 설정하여 Ascending/Descending/Mixed를 구분하고자 했다.- Stream의 allMatch 메서드를 활용하여 최종 패턴을 구분하고 결과..

문제는 다음과 같으며, 사용자가 입력한 값을 nextInt으로 읽어낼 지 혹은 nextLine으로 읽어낼지 선택하고 적절히 처리하는 것이 중요했던 것 같다. 가장 기본적인 개념인데도 처음에 실수한 내용은 다음과 같다. next() 의 경우, 개행문자(\n; Enter)를 포함하지 않고 공백 앞에서 끊은 문자열만 반환받게 된다. 그래서 공백문자는 그대로 남아있게 된다. 이 때, 또 다시 데이터를 읽어오려고 하면 NumberFormatException이 발생하게 된다. 그러므로 next 또는 nextInt를 활용하고자 한다면, 이후에 버퍼를 비워주는 nextLine을 추가해줌으로써 공백문자가 남아있는 문제점을 해결할 수 있다. 사실 이전에 백준 문제를 풀면서도 정리했던 내용인데, 간과한 것 같다.202..

문제는 다음과 같다. 처음에는 두번째 줄부터 입력받은 금속의 무게(M)와 무게당 가격(P)을 int 배열 그대로 List 에 저장하여 처리하고자 했다.아래의 코드가 첫 시도한 결과이다.import java.io.*;import java.util.*;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String firstInput = sc.nextLine(); int maxWtOfBag = Integer.parseInt(firstInput.split(" ")[0]); // 배낭 최대 무게 int numOfType = Intege..