전체 글 149

프로그래머스 : 양옆앞뒤 큰 수 찾기

오늘은 알고리즘 테스트 시험을 봤다. 난이도 상, 중, 하 이렇게 세문제가 나왔으나 중, 하는 쉬웠다. 하지만 난이도가 상인 문제는 어려웠다. 상하좌우의 값을 비교해 가장 큰 값이라면 별을 출력하게 해야 하는 문제였다 처음에는 배열초과가 일어나지 않게 하기 위해 총 세부분으로 나누어 작업했다 1. 두 부분의 값만 비교하면 되는 꼭짓점 2. 세 부분의 값만 비교하면 되는 모서리 3. 상하좌우 모두 비교하여야 하는 안쪽 부분 public class Test_3 { public void Solution(int[][] checkin){ String [][] answer = new String[checkin.length][checkin[0].length]; // 1 꼭짓점 부분 구현 // 1-1. [0, 0] a..

Algorithm 2023.06.22

프로그래머스: 포켓몬

알고리즘 문제를 풀면서 Stream을 이용하여 문제를 너무 풀어보고 싶었다. 그래서 시간이 날 때 틈틈이 Stream에 대해 알아봤다 처음 볼 땐, 무슨말인지도 모르겠고 걱정이 앞섰지만 코드들이 어떤 역할을 하는지 눈에 익기 시작했다. Stream을 사용하여 풀었던 첫번째 문제이다. 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 여러 종류의 포켓몬이 주어진다. 포켓몬의 종류는 중복될 수 있다. 포켓몬은 주어진 포켓몬의 절반만큼 가져갈 수 있다. 이때, 다른 종류의 포켓몬은 몇 마리인가? 가 문제이다. 손쉽게 풀 수 있었던 문제였다. 이번에는 Stream을..

Algorithm 2023.06.21

스트림(Stream)

데이터를 작은 조각으로 나누어 순차적으로 처리하는 방식이다. 유튜브로 스트림에 대한 간단한 예시를 들 수 있다. 유튜브 시청 시, 한번에 분 단위로 스킵을 한다면 버퍼링이 걸리게 된다. 왜냐하면 유튜브는 한꺼번에 영상 전부를 가져오는 방식이 아닌, 동영상 하나를 작은 조각으로 나눠 순차적으로 받아오는 스트리밍 방식이기 때문이다. 이처럼 스트리밍을 사용하면 전체 동영상을 모두 가져오지 않아도 실시간으로 재생할 수 있다. 이를 통해 실시간으로 데이터를 처리하고, 메모리를 효율적으로 사용할 수 있다 스트림의 특징 1. 원본 데이터를 변경하지 않는다 2. 휘발성이다 - 한번 사용한 스트림은 사라지게 된다. 3. 스트림은 collection에 정의되어 있다. 모든 컬렉션을 상속하는 구현체(map, filter, ..

Java 2023.06.21

프로그래머스 : 실패율 (42889)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 위의 문제를 보고 스테이지를 key 값, 실패율을 value값으로 구현하여 풀면 되겠다고 생각했다. 최근에 힘겹게 풀었던 문제들을 TIL로 자주 썼었는데, 이 문제는 특히나 어려웠다. import java.util.*; class Solution { public int[] solution(int N, int[] stages) { Map map = new HashMap(); int answer[] = new int[N]; // 1부터 N까지 map 생성 for (int i = 0; i < N; i++) { ma..

Algorithm 2023.06.20

프로그래머스 : 신규 아이디 추천 (72410)

문시해알 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이번 문제는 구현해야 할 부분이 너무 많아 막막했다. 해야 할 양은 많지만 그래도 구현하지 못할 부분은 없는 것 같아 하나하나 천천히 구현해 나갔다. // 대문자 -> 소문자로 변환 String lower = new_id.toLowerCase(); // 소문자, 숫자, 빼기, 점, 언더바만 값 넣기 String specialCheck = specialCheck(lower); // 점이 연속해서 두개 이상이라면 하나로 바꾸기 String decimalCheck = decimalCheck(specialC..

Algorithm 2023.06.19

프로그래머스 : 문자열 내 마음대로 정렬하기 (12915)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 오늘도 알고리즘 문제를 풀었다. 이번 문제는 굉장히 복잡했다. 우선 구현해야 할 목록을 메모장에 작성했다. 1. n번째 글자를 ASCII로 서로 값을 비교해 버블정렬 2. 만약 n번째 글자가 같다면 2-1. 만약 비교중인 두 문자의 길이가 같다면 2-1-1. 두 개의 int 생성, 첫 번째 글자부터 값이 차이가 나게 되는 글자까지 for문을 사용하여 서로 다른 int에 넣음 2-1-2. 만약 뒤에 있는 int가 더 낮을 시, 현재 위치의 문자와 버블정렬을 통해 교환 2-2. 만약 뒤의 문자 길이가 더 짧다면 ..

Algorithm 2023.06.18

WIL : Week01

첫 주차는 JVM과 객체지향이란 어떤 것인지에 대해 공부할 수 있었다. 코드가 어떻게 동작하는지에 대해 더 구체적으로 알 수 있었고, 자바가 왜 객체지향언어라고 불리며 객체지향이란 무엇인지, 흥미롭고 많은 걸 배울 수 있는 시간이었다. JVM JVM은 운영체제 위에서 동작하며 운영체제와 하드웨어 간 인터페이스를 제공하는 역할을 한다. 쉽게 말해, Mac이나 Window 등 다양한 운영체제에서 Java를 실행 가능한 환경(가상환경)을 만들어 준다. 또 JVM은 가비지 컬렉션(GC; Garbage Collection)을 통해 자동으로 메모리를 관리해 주기에 매우 효율적이다. 1. 개발자가 작성한 코드가. java 파일로 저장된다 2. 자바 컴파일러가 개발자가 작성한 소스코드(.java)를 바이트코드(.cla..

TIL, WIL 2023.06.17

프로그래머스 : 완주하지 못한 선수 (42576)

https://school.programmers.co.kr/learn/courses/30/lessons/42576 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 오늘도 알고리즘 몇문제 풀었다. 입력값으로는 마라톤에 참여한 선수와 골인한 선수가 주어진다. 출력값으로는 완주하지 못한 선수 이름을 출력해야 한다. set으로 구현해보려 했으나 중복선수가 존재하여 바로 포기했고, 일단 기능을 먼저 구현해보고자 하여 2중for문을 사용해서 구현했으나, 시간복잡도 문제로 인해 해결하지 못했다. 그래서 for문보다 contains가 더 빠르지 않을까 라는 생각에 Lis..

Algorithm 2023.06.16

프로그래머스 : 달리기 경주

https://school.programmers.co.kr/learn/courses/30/lessons/프로그래머스 : 달리기 경주 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr class Solution { public String[] solution(String[] players, String[] callings) { String[] answer = new String[players.length]; String a = ""; for(int i = 0; i < callings.length; i++) { for(int j = 0; j < players.l..

Algorithm 2023.06.14