Programmers/Lv.1
-
이번 문제는 replaceAll() 메소드와 정규표현식을 사용하는 문제였다. 그리 어렵다고 느껴지는 문제는 아니었다. 전체 코드를 보자. class Solution { public String solution(String new_id) { new_id = new_id.toLowerCase(); new_id = new_id.replaceAll("[^\\w-_.]", ""); new_id = new_id.replaceAll("\\.+", "."); if(new_id.charAt(0) == '.') new_id = new_id.substring(1); if(new_id.length() != 0) { if(new_id.charAt(new_id.length() - 1) == '.') new_id = new_id...
프로그래머스 - 신규 아이디 추천이번 문제는 replaceAll() 메소드와 정규표현식을 사용하는 문제였다. 그리 어렵다고 느껴지는 문제는 아니었다. 전체 코드를 보자. class Solution { public String solution(String new_id) { new_id = new_id.toLowerCase(); new_id = new_id.replaceAll("[^\\w-_.]", ""); new_id = new_id.replaceAll("\\.+", "."); if(new_id.charAt(0) == '.') new_id = new_id.substring(1); if(new_id.length() != 0) { if(new_id.charAt(new_id.length() - 1) == '.') new_id = new_id...
2024.04.01 -
Product 객체를 만들어 이 문제를 해결해봤다. 먼저 Product class class Product { int code; int date; int maximum; int remain; public Product(int code, int date, int maximum, int remain) { this.code = code; this.date = date; this.maximum = maximum; this.remain = remain; } // Getter 메서드들... } Product 객체를 생성한 후에 조건에 맞는 product만을 선별을 해야한다. 그리고 sort_by에 맞는 정렬 기준을 생성해준다. for(int i = 0; i < data.length; i++) { Product pr..
프로그래머스 - 데이터 분석Product 객체를 만들어 이 문제를 해결해봤다. 먼저 Product class class Product { int code; int date; int maximum; int remain; public Product(int code, int date, int maximum, int remain) { this.code = code; this.date = date; this.maximum = maximum; this.remain = remain; } // Getter 메서드들... } Product 객체를 생성한 후에 조건에 맞는 product만을 선별을 해야한다. 그리고 sort_by에 맞는 정렬 기준을 생성해준다. for(int i = 0; i < data.length; i++) { Product pr..
2024.04.01 -
이번 문제는 다른 문제보다 훨씬 더 쉽게 느껴졌다. 바탕화면 분석 : 먼저, 주어진 wallpaper 배열을 순회하며 파일이 위치한 가장 왼쪽, 오른쪽, 위, 아래 지점을 찾는다. 좌표사용 : 이렇게 찾은 좌표를 이용해 드래그의 시작점과 끝점을 결정한다. class Solution { public int[] solution(String[] wallpaper) { int[] answer = new int[4]; int top = 51; int bottom = 0; int left = 51; int right = 0; for(int i = 0; i < wallpaper.length; i++) { for(int j = 0; j < wallpaper[0].length(); j++) { if(wallpaper[i..
프로그래머스 - 바탕화면이번 문제는 다른 문제보다 훨씬 더 쉽게 느껴졌다. 바탕화면 분석 : 먼저, 주어진 wallpaper 배열을 순회하며 파일이 위치한 가장 왼쪽, 오른쪽, 위, 아래 지점을 찾는다. 좌표사용 : 이렇게 찾은 좌표를 이용해 드래그의 시작점과 끝점을 결정한다. class Solution { public int[] solution(String[] wallpaper) { int[] answer = new int[4]; int top = 51; int bottom = 0; int left = 51; int right = 0; for(int i = 0; i < wallpaper.length; i++) { for(int j = 0; j < wallpaper[0].length(); j++) { if(wallpaper[i..
2024.04.01 -
이번 문제는 각 개인정보의 유효기간을 계산하여, 주어진 날짜와 비교 후 지워야 할 데이터를 선별하는 것이다. 이번 문제를 풀기위해 DateTimeFormatter와 LocalDate 객체를 사용했다. 유효기간 Map객체에 매핑 : 유효기간을 terms 배열에서 termMap에 저장한다. Key는 약관, value는 유효기간으로 저장한다. Map termMap = new HashMap(); for(int i = 0; i < terms.length; i++) { termMap.put(terms[i].split(" ")[0], Integer.parseInt(terms[i].split(" ")[1])); } 개인정보 검토 및 파기 대상 식별 : 개인정보의 약관 종류와 수집 일자를 파악한다. 해당 약관의 유효기간..
프로그래머스 - 개인정보 수집 유효기간이번 문제는 각 개인정보의 유효기간을 계산하여, 주어진 날짜와 비교 후 지워야 할 데이터를 선별하는 것이다. 이번 문제를 풀기위해 DateTimeFormatter와 LocalDate 객체를 사용했다. 유효기간 Map객체에 매핑 : 유효기간을 terms 배열에서 termMap에 저장한다. Key는 약관, value는 유효기간으로 저장한다. Map termMap = new HashMap(); for(int i = 0; i < terms.length; i++) { termMap.put(terms[i].split(" ")[0], Integer.parseInt(terms[i].split(" ")[1])); } 개인정보 검토 및 파기 대상 식별 : 개인정보의 약관 종류와 수집 일자를 파악한다. 해당 약관의 유효기간..
2024.03.31 -
이번 문제를 해결하기 위한 방법은 선수들의 현재 순위를 관리하는 것이다. 이를 위해 HashMap을 사용하여 각 선수의 이름과 현재 순위를 key-value 쌍으로 저장한다. 해설진이 선수 이름을 부를 때마다 해당 선수는 바로 앞 선수를 추월한 것으로 간주하여 순위를 업데이트한다. 1. 초기 순위 설정 : 선수들의 초기 순위를 HashMap에 저장한다. 이 때 선수들의 이름을 key로, 현재 등수를 value(index) 값으로 사용한다. Map runners = new HashMap(); for(int i = 0; i < players.length; i++) { runners.put(players[i], i); } 2. 추월 상황 처리 : 해설진이 부른 이름을 기반으로 순위 변경 로직을 실행한다. 호출..
프로그래머스 - 달리기 경주이번 문제를 해결하기 위한 방법은 선수들의 현재 순위를 관리하는 것이다. 이를 위해 HashMap을 사용하여 각 선수의 이름과 현재 순위를 key-value 쌍으로 저장한다. 해설진이 선수 이름을 부를 때마다 해당 선수는 바로 앞 선수를 추월한 것으로 간주하여 순위를 업데이트한다. 1. 초기 순위 설정 : 선수들의 초기 순위를 HashMap에 저장한다. 이 때 선수들의 이름을 key로, 현재 등수를 value(index) 값으로 사용한다. Map runners = new HashMap(); for(int i = 0; i < players.length; i++) { runners.put(players[i], i); } 2. 추월 상황 처리 : 해설진이 부른 이름을 기반으로 순위 변경 로직을 실행한다. 호출..
2024.03.31 -
이번 문제의 주요 로직은 다음과 같다. 공원의 초기 상태 파악하기: 문자열 배열 park를 이용하여 공원의 상태를 2차원 배열 newPark에 저장한다. 이때, 산책 시작 위치도 함께 저장한다. 명령에 따라 이동 처리하기: 문자열 배열 routes에 담긴 각 명령을 분석하여 이동할 방향과 거리를 결정한다. 이때, move 메소드를 호출하여 실제 이동 처리를 진행한다. 이동 가능 여부 확인하기: move 메소드 내에서는 산책 도중 공원을 벗어나거나 장애물에 부딪히는지 확인한다. 만약 이동 중 장애물을 만나거나 공원 경계를 벗어나려고 한다면, 해당 명령을 무시하고 위치를 조정하지 않는다. 먼저 공원의 초기 설정이다. for(int i = 0; i < park.length; i++) { for(int j = ..
프로그래머스 - 공원 산책이번 문제의 주요 로직은 다음과 같다. 공원의 초기 상태 파악하기: 문자열 배열 park를 이용하여 공원의 상태를 2차원 배열 newPark에 저장한다. 이때, 산책 시작 위치도 함께 저장한다. 명령에 따라 이동 처리하기: 문자열 배열 routes에 담긴 각 명령을 분석하여 이동할 방향과 거리를 결정한다. 이때, move 메소드를 호출하여 실제 이동 처리를 진행한다. 이동 가능 여부 확인하기: move 메소드 내에서는 산책 도중 공원을 벗어나거나 장애물에 부딪히는지 확인한다. 만약 이동 중 장애물을 만나거나 공원 경계를 벗어나려고 한다면, 해당 명령을 무시하고 위치를 조정하지 않는다. 먼저 공원의 초기 설정이다. for(int i = 0; i < park.length; i++) { for(int j = ..
2024.03.31 -
프로그래머스 Lv.1 정답률 낮은 순부터 풀어보고 있는데 그 이상한 카카오톡 선물하기 보다는 이 문제가 훨씬 쉽게 느껴졌다. 문제를 보기 편해서 그런가..? 이 문제는 공격 시간과 그 전 공격 시간 사이의 간격만 잘 파악하면 쉽게 풀 수 있는 문제였다. 먼저 이전 공격시간과 공격시간의 차이가 1초이면 회복을 할 수 없다는 점이 문제 푸는데 나름 함정이라면 함정이라고 할 수 있었다. 그 부분을 빼면 거의 대부분의 분들이 어렵지 않게 풀 수 있을 것이다. class Solution { public int solution(int[] bandage, int health, int[][] attacks) { int casting = bandage[0]; int heal = bandage[1]; int bonusHe..
프로그래머스 - 붕대 감기프로그래머스 Lv.1 정답률 낮은 순부터 풀어보고 있는데 그 이상한 카카오톡 선물하기 보다는 이 문제가 훨씬 쉽게 느껴졌다. 문제를 보기 편해서 그런가..? 이 문제는 공격 시간과 그 전 공격 시간 사이의 간격만 잘 파악하면 쉽게 풀 수 있는 문제였다. 먼저 이전 공격시간과 공격시간의 차이가 1초이면 회복을 할 수 없다는 점이 문제 푸는데 나름 함정이라면 함정이라고 할 수 있었다. 그 부분을 빼면 거의 대부분의 분들이 어렵지 않게 풀 수 있을 것이다. class Solution { public int solution(int[] bandage, int health, int[][] attacks) { int casting = bandage[0]; int heal = bandage[1]; int bonusHe..
2024.03.27 -
솔직히 처음 이 문제 보고 나서 도대체 카카오는 문제를 왜 이렇게 보기 힘들게 내지..? 라는 생각이 들었다. 문제가 뭔가 되게 복잡해보이고 길다..ㅎ 대충 선물을 받는데 가장 많이 받는 사람이 받는 개수를 구하라는 것. 고민에 고민을 하고 HashMap을 써보자! 했지만 어떤 방식으로 풀어야 하는지도 잘 모르겠었다. 그래서 다른 사람의 풀이도 봤지만... 다들 문제 보기가 힘들었지 막상 문제대로 코드를 작성하면 쉽게 풀린다고..말하네...? 그래서 내 나름 정리를 해보려고 올린다. 먼저 카카오 친구들의 이름과 인덱스를 저장할 HashMap을 만든 후 이름과 인덱스를 저장한다. HashMap names = new HashMap(); for(int i = 0; i < fLength; i++) { names..
프로그래머스 - 가장 많이 받은 선물솔직히 처음 이 문제 보고 나서 도대체 카카오는 문제를 왜 이렇게 보기 힘들게 내지..? 라는 생각이 들었다. 문제가 뭔가 되게 복잡해보이고 길다..ㅎ 대충 선물을 받는데 가장 많이 받는 사람이 받는 개수를 구하라는 것. 고민에 고민을 하고 HashMap을 써보자! 했지만 어떤 방식으로 풀어야 하는지도 잘 모르겠었다. 그래서 다른 사람의 풀이도 봤지만... 다들 문제 보기가 힘들었지 막상 문제대로 코드를 작성하면 쉽게 풀린다고..말하네...? 그래서 내 나름 정리를 해보려고 올린다. 먼저 카카오 친구들의 이름과 인덱스를 저장할 HashMap을 만든 후 이름과 인덱스를 저장한다. HashMap names = new HashMap(); for(int i = 0; i < fLength; i++) { names..
2024.03.27