level1

PS/Programmers

[level1, for문] 콜라 문제

class Solution { public int solution(int a, int b, int n) { int result = 0; //빈 병 a개마다 꽉 찬 병 b개를 돌려줌 //1회차 빈 병 20개 -> 꽉 찬 병 10개 //2회차 빈 병 10개 -> 꽉 찬 병 5개 //3회차 빈 병 4+1개 -> 꽉 찬 병 2개 //4회차 빈 병 2+1개 -> 꽉 찬 병 1개 //5회차 빈 병 1+1개 -> 꽉 찬 병 1개 //5회차 빈 병의 개수가 a와 같거나 작으면 반복 종료 //빈 병 저장할 변수 int emptyBottle = 0; while ((n / a) * b > 0) { result += (n / a) * b; if (n % a < a) { emptyBottle += (n % a); } n = (..

PS/Programmers

[level1, HashMap] 달리기 경주

1. 문제 2. 문제 해결 논리 1. 문제 이해 데이터 구조 결정 HashMap 이용 선수(players 배열의 원소)와 등수(players 배열 각 원소의 인덱스) 저장 2. 알고리즘 설계 HashMap을 players 배열로 초기화 callings 배열 순회 HashMap에서 player의 등수 추출 버블 정렬을 이용하여 players 배열 갱신 HashMap 등수 갱신 3. 코드 구현 import java.util.*; class Solution { public String[] solution(String[] players, String[] callings) { //1. HashMap으로 초기화 HashMap rankMap = new HashMap(); for (int i = 0; i < playe..

PS/Programmers

[level1, Stack/Queue] 같은 숫자는 싫어

1. 문제 2. 문제 해결 논리 문제 이해 주어진 것 int[] arr //0보다 크거나 같고 9보다 작거나 같은 정수를 원소로 하는 배열 요구되는 것 int[] answer //중복된 원소만 제거된 배열 데이터 구조 결정 방법 1. List, ArrayList 구조 사용 Collection 인터페이스를 구현하고 있는 List 인터페이스의 사용 List 인터페이스의 주요 메서드 add(E element) -> 반환 값 boolean get(int index) -> 반환 값 E element isEmpty() -> 반환 값 boolean size() -> 반환 값 int sort(Comparator

PS/Programmers

[level1, 유클리드 호제법] 최대공약수와 최소공배수

1. 문제 2. 문제 해결 논리 문제 이해 주어진 것 int n, int m //임의의 두 자연수 요구되는 것 두 수의 최대공약수(GCD) 최소공배수(LCM) 데이터 구조 결정 유클리드 호제법 기본 원리 두 수의 GCD(최대공약수, Greatest Common Divisor)를 찾는 알고리즘 두 양의 정수 a와 b(a > b)가 주어졌을 때, a를 b로 나눈 나머지 r과 b의 GCD는 같다 얻어진 b와 r(b > r)로 b를 r로 나누면 나머지 r2와 r의 GCD는 같다 이와 같은 작업을 반복하여 나머지가 0이 되는 시점에서 나누는 수가 GCD 방법 1. 반복문 사용 방법 2. 재귀 호출 사용 코드가 간결하고 이해하기 쉬움 재귀 호출 횟수가 매우 많아지면 스택 오버플로우가 발생할 가능성이 있음 방법 3...

PS/Programmers

[level1, array] 행렬의 덧셈

1. 문제 2. 문제 해결 논리 문제 이해 주어진 것 arr1, arr2 //행과 열의 크기가 같은 임의의 배열 요구되는 것 answer //arr1과 arr2의 각 원소를 더한 배열 데이터 구조 결정 방법 1. 이중 for문 사용 for문을 사용하기 적합한 상황 인덱스에 접근할 필요가 있을 때 (== 순서에 의존하는 작업을 할 때) 요소를 수정하거나 제어해야할 때 코드가 길어지면 가독성이 떨어질 수 있음 요소를 순회하고 값을 읽는 작업, 특정 순서를 따르는 작업에 좋음 방법 2. for - each문 사용 for - each문을 사용하기 적합한 상황 인덱스에 접근할 필요가 없을 때 (== 순서에 의존하지 않는 작업을 할 때) 순회 작업이 간단할 때 간결하고 가독성이 좋음 요소를 순회하고 값을 읽는 작업..

PS/Programmers

[level1, sort] 문자열 내림차순으로 배치하기

1. 문제 2. 문제 해결 논리 문제 이해 주어진 것 String s //임의의 정렬할 문자열 요구되는 것 String answer //내림차순 정렬된 문자열 데이터 구조 결정 StringBuilder 사용 문자열을 동적으로 생성 및 수정할 때 유용한 클래스 StringBuilder의 주요 메소드 append() : 문자열 뒤에 추가 insert() : 지정된 위치에 삽입 delete() : 지정된 시작과 끝 인덱스 사이의 문자열 삭제 replace() : 지정된 시작과 끝 인덱스 사이의 문자열을 다른 값으로 대체 reverse() : 문자열을 거꾸로 뒤집기 toString() : StringBuilder 객체를 String 객체로 변환하여 반환 방법 1. 정렬 메소드 사용 Arrays.sort(정렬 대..

PS/Programmers

[level1, StringBuilder] 수박수박수박수?

1. 문제 2. 문제 해결 논리 1. 문제 이해 주어진 것 int n //반복할 횟수 요구되는 것 String //수, 박을 반복하는 문자열 2. 데이터 구조 결정 StringBuilder 사용 문자열을 동적으로 생성하고 수정할 때 유용한 클래스 String은 수정 불가하므로 문자열을 수정할 때마다 새로운 객체가 생성됨. 따라서 메모리 낭비와 성능 저하 StringBuilder의 주요 메소드 append() : 문자열 뒤에 추가 insert() : 지정된 위치에 삽입 delete() : 지정된 시작과 끝 인덱스 사이의 문자열 삭제 replace() : 지정된 시작과 끝 인덱스 사이의 문자열을 다른 값으로 대체 reverse() : 문자열을 거꾸로 뒤집기 toString() : StringBuilder 객..

PS/Programmers

[level1, Map] 신고 결과 받기

1. 문제 2. 문제 해결 논리 문제 이해 주어진 것 String[] id_list //유저 Id 배열 String[] report //신고 정보(신고자, 피 신고자) 배열 int k // 정지 기준 신고 횟수 요구되는 것 int[] //각 유저 별 신고 처리 메일 발송 횟수 배열 데이터 구조 결정 Map 구조 사용 키-값 저장 : 각 유저 별(Key) 유저 정보(Value, 피 신고 횟수 or 신고자 목록) -> Map 사용 빠른 조회 속도 : HashMap(해시 함수 이용) -> 조회 속도 빠름 유연한 사이즈 : Map은 동적으로 크기 조절 가능 -> 유저의 수가 변동될 때에도 구조 유지 가능 알고리즘 설계 각 유저 별 유저 정보를 위한 Map 생성 각 유저 Id와 인덱스를 저장할 Map1 생성 피 ..

git-sun
'level1' 태그의 글 목록