본문 바로가기

Exercise16

[JAVA] 아이소그램(isogram) 알고리즘 문제 문자열을 입력받아 아이소그램인지 여부를 리턴해야 합니다. 아이소그램(isogram)은 각 알파벳을 한번씩만 이용해서 만든 단어나 문구를 말합니다. 원래 하려고 했던 방법 1 str = str.toLowerCase(); String[] new_str = new String[str.length()]; for (int i = 0; i < str.length(); i++) { new_str [i] = str.toLowerCase(); for (int j = i + 1; j < str.length(); j++) { if (new_str [i] == new_str[j]) { return false; } } } return true; 문제점 charAt를 사용해 변환해주는 대신 new_str이라는 새로운 배열을.. 2022. 10. 21.
[JAVA] 가장 길고 짧은 문자열 제외하기 문제: 가장 짧은 문자열과 가장 긴 문자열을 제거한 배열을 리턴 주의: 가장 짧은 문자열의 길이와 가장 긴 문자열의 길이는 같을 수 없다/ 길이가 가장 길거나 짧은 게 여러개라면 나중에 위치한 문자열을 제거 public class Main { public String[] removeExtremes(String[] arr) { if (arr.length == 0) return null; int shortestLen = 20; int longestLen = 0; int shortestIdx = 0; int longestIdx = 0; for (int i = 0; i < arr.length; i++) { if (arr[i].length() = longestLen) { longestLen = arr[i].len.. 2022. 10. 21.
[JAVA] 연속되는 홀수 사이에 '-'넣기 문제 : 문자열을 입력받아 연속된 한자리 홀수 숫자 사이에 '-'를 추가한 문자열을 리턴 public class Solution { public String insertDash(String str) { if (str.length() == 0) return null; String result = "" + str.charAt(0); for (int i = 1; i < str.length(); i++) { int prev = Character.getNumericValue(str.charAt(i - 1)); int curr = Character.getNumericValue(str.charAt(i)); if (prev % 2 != 0 && curr % 2 != 0) { result = result + '-'; }.. 2022. 10. 21.
[JAVA] 문자열 체크 문제 문자열을 입력받아 문자열 내에 아래 중 하나가 존재하는지 여부를 리턴 조건 'a'로 시작해서 'b'로 끝나는 길이 5의 문자열 'b'로 시작해서 'a'로 끝나는 길이 5의 문자열 package com.codestates.coplit; import java.util.*; public class Solution { public boolean ABCheck(String str) { //예외는 false 반환 if (str.length() == 0) return false; str = str.toLowerCase(); for (int i = 4; i < str.length(); i++) { if ((str.charAt(i) == 'a' && str.charAt(i-4) == 'b') || (str.char.. 2022. 10. 21.
[JAVA] 두 칸의 공백을 한 칸으로 문제 문자열을 입력받아 해당 문자열에 등장하는 두 칸의 공백을 모두 한 칸의 공백으로 바꾼 문자열을 리턴 public class Solution { public String convertDoubleSpaceToSingle(String str) { String[] words = str.split(" "); return String.join(" ", words); 흐름 split를 이용해 스페이스 2개로 잘라진 배열을 words에 저장 join을 이용해 words(2페이스 2개)를 스페이스 1개로 바꿔줌 split(): 문자열을 일정한 구분자로 잘라서 배열로 저장 join(): 배열을 문자열로 합쳐줌 2022. 10. 21.
[JAVA] 2차원 배열을 Hashmap으로 문제: 2차원 배열(배열을 요소로 갖는 배열)을 입력받아 각 배열을 이용해 만든 HashMap을 리턴 public class Solution { public HashMap convertListToHashMap(String[][] arr) { HashMap result = new HashMap (); if (arr.length == 0) return result; for(int i = 0; i < arr.length; i++) { if (arr[i].length != 0) { if (!result.containsKey(arr[i][0])){ result.put(arr[i][0], arr[i][1]); } } } return result; } } 흐름 결과값을 받을 hashmap 생성 for문을 사용해서 k.. 2022. 10. 21.
[JAVA] 문자열 첫 글자 대문자로 public class Solution { public String letterCapitalize(String str) { //빈 문자열은 빈 문자열 그대로 if (str.length() == 0) return str; //split()을 사용해서 공백으로 배열 나누기 String[] words = str.split(" "); String result = ""; for (int i = 0; i < words.length; i++) { //빈 문자열은 받으면 그대로 i에 그대로 넣음 if(words[i].isEmpty()) { words[i] = words[i]; } else { //String.valueOf(words[i].charAt(0)): words배열의 i번째를 String으로 바꾼 뒤char로 .. 2022. 10. 21.
[JAVA] firstReverse 문제: 문자열을 입력받아 순서가 뒤집힌 문자열을 리턴 public class Main { public static void main(String[] args) { //배열 arr 만들기 char[] arr = str.toCharArray(); //뒤집힌 걸 받을 배열 만들기 char[] rv_arr = new char[arr.length]; //for문을 사용해서 rv_arr에 arr의 문자열을 역순으로 받음 for (int i = 0; i < arr.length; i++) { rv_arr[arr.length - 1 - i] = arr[i]; } String rv_Str = new String(rv_arr); return rv_Str; } } StringBuilder을 이용한 방법 StringBuilde.. 2022. 10. 21.
[JAVA] 선입선출 상자포장 최대값 들어온 순서대로 선입선출 포장 조건 1.동시에 최대 몇 명이 나갈 수 있는지? 2.맨 앞의 수보다 크면 나가지 못함 3.앞의 수보다 작으면 같이 나감 방법 1. for문을 사용해 배열에서 앞의 수보다 같거나 작은 경우가 나오면 배열을 나눠 따로 저장 (for문 2개 이상 사용) -> 코드가 너무 복잡해져서 방법 바꿈 2. while과 for문을 사용해서 구현 /* 조건 들어온 순서대로 선입선출 포장 동시에 최대 몇 명이 나갈 수 있는지 맨 앞의 수보다 크면 리턴되지 못하고 앞의 수보다 작으면 같이 리턴됨 */ package com.codestates.coplit; import java.util.*; public class Solution { public int paveBox(Integer[] boxes).. 2022. 10. 21.
[JAVA] 브라우저 앞,뒤로 가기 출력 과정 -1 (PREV) A [A,B] [A] [A,B] [A,B,D] [A,B] [A,B,D] [A,B] [A] CURRENT A B C B D A D A D B 1 (NEXT) [C] [A] [A] [A,D] 입력 값 A B C -1 D A -1 1 -1 -1 /* 문제: 브라우저 앞으로 가기와 뒤로 가기 만들기 조건 새 페이지에 접속: prev에 원래 / next 비움 뒤로가기: 원래 페이지를 next / prev 스택의 top으로 이동 -> prev값을 pop 앞으로 가기: 원래 페이지 prev / next 스택의 top로 이동 -> next값을 pop 뒤로가기 앞으로 가기 불가: push 안 함 첫글자에 알파벳 대문자가 아니면 false 리턴 주의사항 1. 뒤로가기 : -1, 앞으로가기 : .. 2022. 10. 21.
728x90