알고리즘 50

[알고리즘] 문자열 총 정리 with Java

문자열 편을 다 보고 나서 나름대로 정리를 해보았다. 자고로,, 공부란 끊임없는 기억의 재조합과 반복이라고 생각한다. 이를 위해 계속해서 복습해서 내 것으로 만들어야겠다는 생각을 했다. 문자열 알고리즘을 배우면서 나름 유효했던 배움들을 기록하고 정리해보았다. 배운 것 정리 1. Scanner . 값을 주로 읽기 위해 사용하는 객체 . next() : 한 문자열 읽기 가능 . nextLine() : 한 줄 읽기 가능 . nextInt() : 한 정수 읽기 가능 . next().charAt(0) : 한 문자 읽기 가능 // 사용법 Scanner sc = new Scanner(System.in); 2. s.{ toUpperCase(), toLowerCase() } . 문자열을 대문자로 바꾸기 위해 사용 Str..

[알고리즘] 암호 with Java, replace(), subString(a,b),parseInt(a,2)

문자열 마지막 문제. 여러 가지 꿀팁을 알게 된 것 같아 뿌듯하다. 까먹지 않게 자주자주 복습해주어야겠다. 오늘 배운 것 1. replace('#','1').replace('*','0') replace는 chain처럼 여러 번 사용 가능하다. String tmp = str.substring(0,7).replace('#', '1').replace('*', '0'); 2. 2진수를 10진수로 바꾸기 Integer.parseInt(i,2)를 사용하면 가능하다. 뒤쪽에는 몇 진수로 들어갔는지 입력해주면 된다. String tmp = '100'; int num = Integer.parseInt(tmp,2); System.out.println(num);// 4 3. subString(a, b) . subString..

[알고리즘] 문자열 압축 with Java, 문자열에 빈 문자 하나 더해주기

오늘은 주말이니까 string파트는 다 끝낸다는 마인드로 강의를 수강해야겠다. 오늘 배운 것 1. 문자열에 빈 문자 하나 더해주기 문자열 전체를 순회하고 싶을 때, 빈 문자열을 하나 더해주는 포인트를 배웠다. 2. 문제 풀이 import java.util.Scanner; public class Main { public static String solution(String str){ String answer = ""; str +=" "; char[] chars = str.toCharArray(); int cnt = 1; for (int i = 0; i < chars.length-1; i++) { if(chars[i] == chars[i+1]){ cnt++; }else{ answer+=chars[i]; if..

[알고리즘] 가장 짧은 문자거리 with Java, 거리 구하는 것에 대한 생각

오늘은 주말이니까 string파트는 다 끝낸다는 마인드로 강의를 수강해야겠다. 오늘 배운 것 1. 문자 간 거리를 구하는 방법 로직 앞으로 갔다 뒤로 갔다 한 번씩 해주면 된다. 방향 설정하는 게 중요하다. 앞으로 가면서 최소 거리를 설정하고, 다시 되돌아오면서 최소 거리를 비교하는 로직. 2. 문제 풀이 import java.util.Scanner; public class Main { public static int[] solution(String str,char c){ int [] answer = new int[str.length()]; char[] chars = str.toCharArray(); int p = str.length(); for (int i = 0; i < answer.length; i..

[알고리즘] 숫자만 추출 with Java, isDigit()

오늘은 주말이니까 string파트는 다 끝낸다는 마인드로 강의를 수강해야겠다. 오늘 배운 것 1. Character.isDigit(c) 숫자인지 판별해주는 메서드 System.out.println(Character.isDigit('8'));// true 2. ASCII 숫자 '0' ~ '9' : 48 ~ 57 3. 문제 풀이 import java.util.Scanner; public class Main { public static int solution(String str) { int answer = 0; char[] chars = str.toCharArray(); for (int i = 0; i =48 && chars[i]

[알고리즘] 유효한 팰린드롬 with Java, 정규식, replaceAll()

2시쯤 되니까 집중력이 많이 떨어진다.. 많이 해보려해도 이제 체력이 안되는 것인가ㅠㅠ 오늘 배운 것 1. 정규식 ^ : not [^A-Z] : a부터 z까지 알파벳이 아닌 것 str.replaceAll("[^A-Z]","") 2. replaceAll(a,b) 전부 교체하는 함수인듯 3. 문제풀이 import java.util.Scanner; public class Main { public static String solution(String str) { String answer = "YES"; char[] chars = str.toCharArray(); String tmp = ""; for (int i = 0; i < chars.length; i++) { if (Character.isAlphabetic..

[알고리즘] 회문 문자열 with Java, equalsIgnoreCase()

회문 문자열을 구현해보고자 한다. 대소문자를 구분하지 않는 equals가 있다는 사실이 조금 신기했다. 오늘 배운 것 1. 문자열 반까지만 for문 돌기 i < len/2 i len-1-i 2. equalsIgnoreCase() 이 함수는 대소문자 구분 없이 판별해준다. System.out.println("t".equalsIgnoreCase("T"));// true 3. 문제 풀이 import java.util.Scanner; public class Main { public static String solution(String str) { String answer = "YES"; str = str.toUpperCase(); for (int i = 0; i < str.length()/2; i++) { if..

[알고리즘] 중복문자 제거 with Java, indexOf(s.charAt(c))

오늘 배운 것 1. 중복 문자열 판별하기 문자열 리스트 중 한 문자의 위치 == for문의 인덱스 i인 경우 해당 문자열이 첫번째로 나온 것임을 확인할 수 있다. 예를들어 test라는 문자열이 존재할 때, 아래의 표와 같이 마지막 T는 번호가 같지 않음을 확인할 수 있다. 이것은 중복 문자열이라고 하고 추가하지 않아야 한다. 2. 문제 풀이 import java.util.Scanner; public class Main { public static String solution(String str) { String answer = ""; for (int i = 0; i < str.length(); i++) { if(str.indexOf(str.charAt(i)) == i){ answer += str.char..

[백준] 단지번호 붙이기 - BFS

단지번호붙이기 성공출처 시간 제한메모리 제한제출정답맞은 사람정답 비율 1 초 128 MB 93709 38989 24584 39.632% 문제 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고, 각 단지에 속하는 집의 수를 오름차순으로 정렬하여 출력하는 프로그램을 작성하시오. 입력 첫 번째 줄에는 지도의 크기 N(정사각형이므로 가로와 세로의 크기는 같으며 5≤N≤2..

[프로그래머스] 전화번호 목록

https://programmers.co.kr/learn/courses/30/lessons/42577#qna 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 전화번호 목록 문제 설명 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 so..

알고리즘/해시 2021.09.19