일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- java
- wil
- AWS
- Flutter
- 내일배움캠프
- 99클럽
- 운영체제
- 스파르타코딩클럽
- 소프트웨어
- 개인공부
- 컴퓨터개론
- Spring
- 스파르타내일배움캠프TIL
- 스파르타내일배움캠프
- 국비
- 자바
- 개발자스터디
- 스파르타내일배움캠프WIL
- til
- 개발자블로그
- 99일지
- 프로그래머스
- Python
- 중심사회
- 부트캠프
- 컴퓨터구조론 5판
- 항해
- 코딩테스트
- MySQL
- 백준
- Today
- Total
컴공생의 발자취
프로그래머스(가운데 글자 가져오기 및 콜라 문제) 본문
💡 오늘의 학습 키워드
- 프로그래머스
* 가운데 글자 가져오기 : 비기너 문제
* 콜라 문제 : 미들러 문제
오늘의 회고
문제1 : [가운데 글자 가져오기]
- 어떤 문제가 있었고, 나는 어떤 시도를 했는지
문자열의 중간 문자를 가져오는 문제이다. 문자열의 길이가 짝수라면 중간에 있는 2개의 문자를 홀수라면 중간에 있는 1개의 문자를 가져온다.
짝수일 때랑 홀수일 때를 나눠서 짝수라면 중간에 2개 인덱스의 문자를 가져오고
홀수라면 중간에 1개 인덱스의 문자를 가져오도록 했다.
그리고 StringBuilder을 사용 후 String으로 변환 후 리턴해줬다.
- 어떻게 해결했는지
class Solution {
public String solution(String s) {
StringBuilder sb = new StringBuilder();
String answer = "";
int len = s.length();
if (len % 2 == 0) {
sb.append(s.charAt(s.length()/2 - 1));
sb.append(s.charAt(s.length()/2));
}
else {
sb.append(s.charAt(s.length()/2));
}
answer = sb.toString();
return answer;
}
}
문제2 : [콜라 문제]
- 어떤 문제가 있었고, 나는 어떤 시도를 했는지
a개의 빈병이 있다면 b개의 새로운 콜라로 바꿔준다. 내가 가진 빈병이 n개라면 총 몇 개의 새로운 콜라로 바꿀 수 있는지를 세어보는 문제이다.
만약 빈병 a개로 내가 가진 빈병(n)을 나누었을 때 나머지가 존재할 수 있기에 나머지를 따로 구해서 남는 병으로 저장해주고
새로 받은 콜라는 내가 가진 빈병(n)을 빈병 a개로 나눈 몫에 새로운 콜라(b)를 곱한 것이므로 이를 새로 받은 콜라를 더하여 값을 가지고 있게 한다.
그리고 현재 내가 가진 빈병(n)은 내가 가진 빈병(n)을 빈병 a개로 나눈 것에 새로운 콜라(b)를 곱하고 앞서 구했던 남는 병을 더해준다.
이러한 과정을 내가 가진 빈병(n)이 빈병 a개 보다 크거나 같다면 반복시켜준다.
이 과정을 통해 한 번에 통과할 수 있었다.
- 어떻게 해결했는지
// input : 빈병(int a), 새로운 콜라(int b), 내가 가진 빈병(int n)
// variable : 새로 받은 콜라(int answer)
// 남는 병(int temp)
/* process
내가 가진 빈병이 빈병보다 크거나 같으면 반복
남는 병 = 내가 가진 빈병 % 빈병
새로 받은 콜라 += (내가 가진 빈병 / 빈병) * 새로운 콜라
내가 가진 빈병 = (내가 가진 빈병 / 빈병) * 새로운 콜라 + 남는 병
*/
// result : 내가 가진 빈병으로 교환했을 때 새로운 콜라병 수
class Solution {
public int solution(int a, int b, int n) {
int answer = 0;
int temp = 0;
while (n >= a) {
temp = n % a;
answer += (n / a) * b;
n = (n / a) * b + temp;
}
return answer;
}
}
- 무엇을 새롭게 알았는지
나는 자바를 선택했지만, 파이썬 비기너분의 풀이 과정을 보면서 콜라문제를 재귀를 사용해서 푸신 것을 보았다.
재귀는 내가 약한 부분이기에 조금 어렵게 느껴지기는 했다. 그리고 재귀로 풀 수도 있다는 생각을 해보지 못해 놀라웠다.
내배캠에서 진행하는 미니 프로젝트를 하며 깃허브의 이슈에 대해 새롭게 알게 되었다. 아직 어떻게 잘 사용하는지는 모르지만, 조금 더 알아봐야겠다. 공부하고 알아볼게 너무 많다...
내일 학습할 것은 무엇인지
- 정보처리기사 실기
- 자바 형변환 정리
- 내배캠 CS 강의 수강
- 클럽99 코딩테스트(비기너 + 미들러)
- 코테 자료구조 정리
'💡 코테' 카테고리의 다른 글
깊이 우선 탐색(DFS: Depth-First Search) 및 프로그래머스(모음사전) (0) | 2024.04.13 |
---|---|
프로그래머스(2016년) (0) | 2024.04.12 |
특정범위 배열복사 및 프로그래머스(K번째수와 덧칠하기 문제) (0) | 2024.04.10 |
없는 숫자 더하기 (0) | 2024.04.09 |
평균 구하기 (1) | 2024.04.07 |