-
[프로그래머스 Lv.0] 중복된 문자 제거(Java)
문제https://school.programmers.co.kr/learn/courses/30/lessons/120888 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이문자열을 처음부터 끝까지 순회하면서 현재 문자가 처음 등장한 위치인지 확인한 뒤, 처음 등장한 문자만 결과 문자열에 추가했다.먼저 charAt()을 사용해 현재 문자를 가져온다.char c = my_string.charAt(i);그다음 indexOf()를 이용해 해당 문자가 문자열에서 처음 등장하는 위치를 찾는다.if (my_string.indexOf(c) == i) answer += c;indexOf(c)는 문자 c가 처음 나타나는 인덱스..
2026.07.19
-
[프로그래머스 Lv.0] 최빈값 구하기(Java)
문제https://school.programmers.co.kr/learn/courses/30/lessons/120812 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이먼저 각 숫자가 몇 번 등장했는지 저장하기 위해 빈도 배열을 만든다.문제에서 배열의 원소는 0 이상 999 이하이므로 크기가 1000인 배열을 생성한다.int[] mode = new int[1000];이후 입력 배열을 한 번 순회하면서 각 숫자의 등장 횟수를 증가시킨다.for (int i = 0; i 그다음 mode 배열을 순회하면서 가장 많이 등장한 숫자를 찾는다.if (max max : 현재까지의 최대 등장 횟수answer : 최빈값cnt :..
2026.07.18
-
[프로그래머스 Lv.0] 배열 회전시키기(Java)
문제https://school.programmers.co.kr/learn/courses/30/lessons/120844 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이오른쪽으로 회전하는 경우에는 현재 원소를 한 칸 뒤의 인덱스에 저장한다.answer[(i + 1) % numbers.length] = numbers[i];여기서 (i + 1) % numbers.length를 사용하면 마지막 원소도 자연스럽게 첫 번째 위치로 이동한다.예를 들어 numbers = {1, 2, 3}이라면 다음과 같이 저장된다.i저장위치결과01answer[1] = 112answer[2] = 220answer[0] = 3최종 결과는 {3..
2026.07.17
-
백엔드 데브코스 12기 6일차
이번 강의는 Java를 이용하여 간단한 명언 게시판을 구현하였다.기능을 하나씩 추가하면서 프로그램을 점진적으로 발전시키는 방식으로 진행하였다.처음에는 단순히 문자열만 출력하는 프로그램이었지만, 기능이 하나씩 추가되면서 객체와 배열을 이용해 데이터를 관리하는 구조로 발전하였다. 이후에는 삭제, 수정 기능을 추가하면서 객체 탐색과 예외 처리, 그리고 List를 활용한 동적 관리까지 확장할 수 있는 기반을 만들었다. ArrayList로 구현하면 빠르고 편하지만, 강사님이 "객체 배열로 코드를 짠 사람은 ArrayList로 짜기 어렵지 않지만, ArrayList로 짠 사람은 객체 배열로 짜기 힘들다"라고 하셨다.그래서 이미 ArrayList로는 구현을 성공했지만 강사님 따라서 객체 배열로도 해보고 있는데, 확실..
2026.07.16
-
[Java] 명언 게시판 만들기(1~5단계) - 리팩토링
이번 단계에서는 명언 게시판의 기능은 변경하지 않고, 책임을 분리하여 가독성과 유지보수성을 높이는 방향으로 리팩토링을 진행했다.1. Main 클래스에서 로직 분리기존에는 Main 클래스가 프로그램의 모든 로직을 담당했다.하지만 Main은 프로그램을 시작하는 역할만 담당하고, 실제 기능은 App 클래스에서 처리하도록 변경했다.변경 전Main ├─ 등록 ├─ 목록 └─ 종료변경 후Main └─ App.run()public class Main { public static void main(String[] args) { App app = new App(); app.run(); }}2. run() 함수의 책임 분리기존 run() 메서드는 사용자 입력등록목록 출력데이터 처리까지 ..
2026.07.16
-
[프로그래머스 Lv.0] 배열 자르기(Java)
문제https://school.programmers.co.kr/learn/courses/30/lessons/120833 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이Arrays.copyOfRange(array, from, to)from : 복사를 시작할 인덱스(포함)to : 복사를 끝낼 인덱스(미포함)코드import java.util.Arrays;class Solution { public int[] solution(int[] numbers, int num1, int num2) { int[] answer = Arrays.copyOfRange(numbers, num1, num2+1); ..
2026.07.16
-
[Java] 명언 게시판 만들기(1~5단계)
요구사항1단계 - 종료2단계 - 등록3단계 - 등록시 생성된 명언번호 노출4단계 - 등록할때 마다 생성되는 명언번호가 증가5단계 - 목록6단계 - 1번 명언삭제7단계 - 존재하지 않는 명언삭제에 대한 예외처리8단계 - 명언수정1단계 - 종료== 명언 앱 == 명령) 종료가장 먼저 Scanner를 이용하여 명령어를 입력받고 "종료"를 입력하면 프로그램이 종료되도록 구현하였다.핵심 코드Scanner sc = new Scanner(System.in);System.out.println("== 명언 앱 ==");String cmd = "";while (!cmd.equals("종료")) { System.out.print("명령) "); cmd = sc.nextLine();}sc.close();2단계 - ..
2026.07.16
-
[프로그래머스 Lv.0] 문자열 정렬하기 (2) (Java)
문제https://school.programmers.co.kr/learn/courses/30/lessons/120911 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이먼저 모든 문자를 소문자로 변환한 뒤, 문자열을 문자 배열로 바꾸어 정렬하고 마지막으로 정렬된 문자 배열을 다시 문자열로 변환하여 반환한다.먼저 toLowerCase()를 사용해 문자열의 모든 문자를 소문자로 변환한다.my_string = my_string.toLowerCase();그다음 toCharArray()를 사용해 문자열을 문자 배열(char[])로 변환한다.char[] charArr = my_string.toCharArray();문자 배..
2026.07.15
-
백엔드 데브코스 12기 5일차
이 날은 추상 클래스와 메서드, 캡슐화를 배웠다.추상 클래스가 개념 자체는 별로 어렵지 않고 개발하면서 잘 안 썼어서 별로 어렵지 않게 생각하고 있었는데, 직접 실습하면서 사용해보니까 생각보다 더 복잡한 개념이라는 생각이 들었다.나중에 개발에 어떻게 사용될 지 궁금해진다.1. 2026.07.15 - [알고리즘/Java] - [Java] 추상 클래스 / 추상 메서드 [Java] 추상 클래스 / 추상 메서드추상 메서드(Abstract Method)추상 메서드(Abstract Method)는 구현(몸체)이 없는 메서드이다.자식 클래스에서 반드시 구현하도록 오버라이딩을 강제하기 위해 사용한다. abstract void 공격(); 메서드의 선언hyemzzi.tistory.com2. 2026.07.15 - [알고리..
2026.07.15