알고리즘 117

[알고리즘] 대소문자 변환 with Java, isUpperCase(), ASCII

열의가 넘치다보니(첫날이다보니) 하루에 두강의를 들어버렸다.. ! 이번 내용은 어떤 내용일까? 오늘 배운 것 1. ASCII 아스키 코드는 대충알고있고 숫자를 외우기 귀찮아서 외우지 않고 있었는데 정리하면서 확실하게 외워두었다. 대문자(A-Z) : 65 - 90 소문자(a-z) : 97 - 122 2. char는 부등호랑 같이 쓰면 int 로 형변환이 자동으로 된다. System.out.println('A'==65); 3. Character 객체에는 isLowerCase(x), toUpperCase(x) 등등 다양한 메서드들이 존재한다. // 오늘 배운 네가지 메서드 char c = 'c'; Character.isLowerCase(c); Character.isUpperCase(c); Character.t..

[알고리즘] 문자 찾기 with Java, Scanner, charAt, toUpperCase(), toCharArray()

자바 기반으로 알고리즘 공부를 새롭게 시작해보자 ! 오늘 배운 것 1. Scanner 객체는 next() 함수가 있는데, 한 줄 읽어올 수 있다. // 한줄 읽어오는 예시 Scanner kb = new Scanner(System.in); String test = kb.next(); 2. next().charAt(0)은 읽어온 문자열 중 한 글자를 읽을 수 있다. 응용 가능하다. // 한줄 읽어온 후, 한글자만 읽어오기 Scanner kb = new Scanner(System.in); char c = kb.next().charAt(0); 3. toUpperCase() 함수를 사용해서 문자열 전체를 대문자로 만들 수 있다. // 한줄 읽어온 후 대문자로 변경하기 Scanner kb = new Scanner(..

[백준] 1로 만들기

https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 탑다운, 바텀업 두가지 방식으로 풀긴 했는데, 탑다운 방식으로 하니까 시간초과가 났다. max_num = 10**20 def solution(n,count): global max_num if n == 1: max_num = min(max_num,count) if n % 3 == 0: solution(n//3,count+1) if n % 2 == 0: solution(n // 2, count +1) if n > 1: solution(n-1,count+1) return max_num def solution2(n):..

알고리즘/DP 2021.11.16

[알고리즘] 퀵 소트 공부해보기

분할정복 알고리즘인 퀵 소트에 대해 공부해보았다. https://www.daleseo.com/sort-quick/ [알고리즘] 퀵 정렬 - Quick Sort (Python, Java) Engineering Blog by Dale Seo www.daleseo.com 여기에서 상상 이상으로 정리가 잘 되어있다. 기본이 있고, 최적화하는 방법이 있는데 나는 일단 기본부터 외워보기로 했다. 의외로 구현이 간단해서 놀라웠다. 금방 외울 수 있었다. def qsort(arr): if len(arr) arr[i]: l.append(arr[i]) elif mid < arr[i]: r.append(arr[i]) else: e.append(arr[i]) return qsort(l) + e + qsort(r) print(..

알고리즘 2021.11.13

[알고리즘] DP 공부해보기

동적 계획법이라는 것에 대해 공부해보는 시간을 가졌습니다. '완전탐색 < DP' 라고 합니다. 문제를 쪼개고, 작은 단위의 답을 구하고, 그걸 바탕으로 더 큰 문제의 답을 구하는 과정을 반복하는 방법입니다. 오늘은 맛보기로 DP의 대표작인 피보나치 수열에 대해 간단하게 알아보았습니다. # recursive def f(n): if n < 2: return n return f(n-1) + f(n-2) # top - down cache = [-1] * 37 def f2(n): if cache[n] != -1: return cache[n] cache[n] = n if n < 2 else f2(n-1) + f2(n-2) return cache[n] # bottom - up fibo = [-1] * 37 def f..

알고리즘/DP 2021.11.10

[프로그래머스] N-Queen 문제

문제 설명 가로, 세로 길이가 n인 정사각형으로된 체스판이 있습니다. 체스판 위의 n개의 퀸이 서로를 공격할 수 없도록 배치하고 싶습니다. 예를 들어서 n이 4인경우 다음과 같이 퀸을 배치하면 n개의 퀸은 서로를 한번에 공격 할 수 없습니다. 체스판의 가로 세로의 세로의 길이 n이 매개변수로 주어질 때, n개의 퀸이 조건에 만족 하도록 배치할 수 있는 방법의 수를 return하는 solution함수를 완성해주세요. 제한사항 퀸(Queen)은 가로, 세로, 대각선으로 이동할 수 있습니다. n은 12이하의 자연수 입니다. 입출력 예 nresult 4 2 입출력 예 설명 입출력 예 #1 문제의 예시와 같습니다. 오답노트 안되는 문제는 그냥 외워라! 그러면 이해하게 될 것이다! 는 말은 진리인 것 같다. 처음에..

[프로그래머스] 가장 긴 펠린드롬

문제 설명 앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다. 문자열 s가 주어질 때, s의 부분문자열(Substring)중 가장 긴 팰린드롬의 길이를 return 하는 solution 함수를 완성해 주세요. 예를들면, 문자열 s가 "abcdcba"이면 7을 return하고 "abacde"이면 3을 return합니다. 제한사항 문자열 s의 길이 : 2,500 이하의 자연수 문자열 s는 알파벳 소문자로만 구성 입출력 예 sanswer "abcdcba" 7 "abacde" 3 입출력 예 설명 입출력 예 #1 4번째자리 'd'를 기준으로 문자열 s 전체가 팰린드롬이 되므로 7을 return합니다. 입출력 예 #2 2번째자리 'b'를 기준으로 "aba"가 팰린드롬이 되므로 3을 retu..

알고리즘 2021.11.08

[HackerRank] Breaking the Records (PYTHON)

문제 링크 : https://www.hackerrank.com/challenges/breaking-best-and-worst-records/problem Breaking the Records | HackerRank Given an array of Maria's basketball scores all season, determine the number of times she breaks her best and worst records. www.hackerrank.com 최고기록을 갱신 시마다 업데이트 시켜주는 것이 중요하다는 것을 알게 되었습니다. def breakingRecords(scores): # Write your code here win_cnt, lose_cnt = 0,0 breaking_win,..

알고리즘 2021.11.01