오늘의 회고
1주차를 마무리하고 2주차 자바가 시작 과제를 받았다.
계산기 과제 꼭 잘하자
=================================================================================
오늘 할일
자바 코딩 테스트 문제 1개 작성
스파르타 자바 강의 1주차
=================================================================================
공부한 내용
[자바 알고리즘 문제 출처: 프로그래머스]
문제:
어떤 문자열에 특정 알파벳이 존재한다면 그 알파벳이 "등장"한다고 합시다.
문자열 목록을 나타내는 문자열 배열 strs가 주어집니다. 문자열 목록들 중 가장 많은 문자열에서 "등장"한 알파벳 문자열을 반환하는 solution 함수를 완성하세요. 만약 가장 많이 등장한 문자가 여러 개라면 모든 문자를 담은 문자열을 사전순으로 정렬해서 반환합니다.
import java.util.*;
class Solution {
public String solution(String[] strs) {
int[] alpa = new int[26];
int max=0;
for(String str:strs){
HashSet<Character> set = new HashSet<>();
for(int i=0;i<str.length();i++){
set.add(str.charAt(i));
}
for(char c :set){
alpa[c-'a']++;
}
}
for(int i=0;i<alpa.length;i++){
if(alpa[i]>max){
max=alpa[i];
}
}
String answer = "";
for(int i=0;i<alpa.length;i++){
if(max==alpa[i]){
answer+=(char)(i+'a');
}
}
return answer;
}
}
먼저 a-z 까지 인덱스로 맞춰줄 alpa배열을 생성한다 26인 이유는 총 a-z의 수 이기 때문 alpa[0]=a alpa[1]=b를 뜻하게
가장 많이 등장한 문자열을 리턴해주는 문제이기 때문에 최대를 담을 수 있는 max변수를 만들어준다. strs안에 str의 한 문자씩 뽑아 set에 넣어 중복을 제거한다. str = "abcd"라고 가정하면 str.charAt(0)=a 인데 위에 배열alpa에 담아주는데 a가 들어갈려면 0번 인덱스에 넣어야 하니까 아스키 코드를 이용해서 'a'를 뺴줌 그후 max 값을 찾고 다시 alpa배열을 돌려 이것이 우리가 구한 max값과 같다면 전에 빼준 'a'를 더해 char로 형변환을 시켜준다.
자바 1주차 과제를 하다가 내가 꼭 개념을 다시 잡아야지 하는 문제가 생각나서 공부해서 작성
위 사진 처럼 레시피1번: 후 입력을 하지않았는데 레시피2번 입력창으로 스킵되어 바로 바뀐다
nextInt(),next(),nextDouble등은 enter를 치면 입력되는 줄바꿈 문자를 읽지 못한다 첫번째 nextInt()을 써 1입력을 받고 엔터를 치면 .두번째는 그 뒤에 엔터를 입력 받게 된다. 그래서
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("내가 좋아 하는 요리 : ");
Scanner sc = new Scanner(System.in);
String title = sc.nextLine();
System.out.println("요리 별점 1~5 (실수 입력)");
// 실수 말고 다른 값이 들어 가는 것을 생각해줘야 하지만 진도에서 배운 내용이 아니여서 생략
double star =sc.nextDouble();
sc.nextLine();//<- 이 부분
String[] recipe = new String[10];
for (int i = 0; i <10 ; i++) {
System.out.println("레시피"+(i+1)+"번 : ");
recipe[i]=sc.nextLine();
}
System.out.println("이름:"+title);
System.out.println("별점:"+star);
System.out.println("레시피 = " + Arrays.toString(recipe));
}
}
이 부분 처럼 sc.nextLine()을 사용
'TIL' 카테고리의 다른 글
[TIL] 스파르타 백엔드 캠프 9일차 (1) | 2024.10.11 |
---|---|
[TIL] 스파르타 백엔드 캠프 8일차 (0) | 2024.10.10 |
[TIL] 스파르타 백엔드 캠프 6일차 (0) | 2024.10.07 |
[TIL] 스파르타 백엔드 캠프 5일차 (3) | 2024.10.04 |
[TIL] 스파르타 백엔드 캠프 4일차 (1) | 2024.10.03 |