| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
- 자바의 정석(기초편)
- 영어원서
- SQL
- StringTokenizer
- java.lang 패키지
- Computer Science
- Programming
- 소프티어
- JavaScript
- MySQL
- Steve Jobs
- 알고리즘
- 코딩테스트
- softeer
- Python
- programmers
- nextInt
- Spring Framework
- 프로그래머스
- Java script
- 해시
- Java
- thinking differently
- 백준
- 관계형 데이터베이스
- 티스토리챌린지
- 반복문
- Spring
- 오블완
- BFS
- Today
- Total
목록전체 글 (129)
도라에몽 개발자
처음에는 반복문과 조건문을 여러번 사용하여 다소 중복된 코드가 존재하기는 하지만, 테스트에 성공했다.이전 배열과 다음에 오는 배열을 오름차순으로 정렬하고, 각 index의 max 값으로 업데이트해가며 최종 가로/세로 길이를 도출해냈다. 오름차순 정렬 후 일차원 배열들의 각 index 값을 서로 비교하여 업데이트 하면 다음과 같다.[50, 60] vs [30, 70] ==> [50, 70][50, 70] vs [30, 60] ==> [50, 70][50, 70] vs [40, 80] ==> [50, 80]최종 확인된 길이: 60, 80 결국 return 값은 지갑의 크기이므로, width * height 값을 반환하면 된다.import java.util.*;class Solution { public ..
다리에 올라간 트럭의 무게와 대기 중인 트럭의 무게를 비교해가며 다리가 버틸 수 있는 무게를 초과하지 않도록 주의하여 풀어내면 되는 문제였다. Queue의 구조를 다리에 빗대어 생각하고 트럭의 무게를 추가/삭제하며 풀어냈다. 우선 반복문에서 무조건 시간은 트럭의 무게와 상관없이 1초씩 증가하도록 설정해줬다.이는 if문으로 주어진 기준에 따라 다리에 트럭을 올리면서 인덱스를 증가시키거나, 또는 트럭을 올리지 않음을 의미하는 0을 Queue에 추가하여 시간은 시간대로 흐르고 인덱스는 기준에 따라 카운트되도록 처리했다. 주의해야 할 사항은 마지막 트럭이 다리에 올라가는 그 순간의 시점에 반복문은 종료된다. 그러므로 반복문이 종료된 이후에 따로 마지막 트럭이 다리를 완전히 빠져나가는데 걸리는 시간을 추가해줘야 ..
문제는 다음과 같습니다. 배열과 Queue, 그리고 반복문을 활용하여 풀었습니다.- 미리 동서남북으로 이동할 수 있는 값들을 배열로 만들어뒀습니다.- 이미 지나온 영역은 boolean을 활용하여 true 로 설정했습니다.- 이동한 위치와 누적된 이동거리를 배열에 담아 queue에 넣었습니다.- 목표지점에 도착하면 총 이동거리를 반환하도록 하고, 목표지점에 도착하지 못했다면 -1을 반환하도록 설정했습니다. import java.util.*;class Solution { public int solution(int[][] maps) { // 이동방향 {상, 하, 좌, 우} int[] dx = {0, 0, -1, 1}; int[] dy = {-1, 1, 0, 0}; ..
문제는 다음과 같다.출처: 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) { ..