일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- hash table
- SQL
- 파이썬
- dynamic programming
- Math
- geometry
- java
- sorting
- implement
- Method
- Number Theory
- database
- 구현
- Counting
- bit manipulation
- 코딩테스트
- Matrix
- simulation
- two pointers
- Data Structure
- greedy
- Class
- Tree
- string
- Binary Search
- 코테
- Stack
- 자바
- Binary Tree
- array
- Today
- Total
목록string (235)
코린이의 소소한 공부노트

DNA란 어떤 유전물질을 구성하는 분자이다. 우리는 어떤 DNA의 물질을 표현할 때, 이 DNA를 이루는 뉴클레오티드의 첫글자 A, T, C, G를 따서 표현한다. 그리고 Hamming Distance란 길이가 같은 두 DNA가 있을 때, 각 위치의 뉴클오티드 문자가 다른 것의 개수이다. 만약에 “AGCAT"와 ”GGAAT"는 첫 번째 글자와 세 번째 글자가 다르므로 Hamming Distance는 2이다. 우리가 할 일은 다음과 같다. N개의 길이 M인 DNA s1, s2, ..., sn가 주어져 있을 때 Hamming Distance의 합이 가장 작은 DNA s를 구하는 것이다. 즉, s와 s1의 Hamming Distance + s와 s2의 Hamming Distance + ... + s와 sn의 ..

어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한다. 미르코를 도와 그가 만들고 싶어하는 수를 계산하는 프로그램을 작성하라. 1. 입력 - N을 입력받는다. N는 최대 105개의 숫자로 구성되어 있으며, 0으로 시작하지 않는다. 2. 출력 - 미르코가 만들고 싶어하는 수가 존재한다면 그 수를 출력하라. - 그 수가 존재하지 않는다면, -1을 출력하라. 3. 예제 4. 코드 import java.util.*; class Main{ public static void main(String[] args){ char[] nums = new Scanner(System.in..

세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다. 그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다. 괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오. 1. 입력 - 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. - 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. - 수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다. 2. 출력 - 첫째 줄에 정답을 출력한다. 3. 예제 4. 코드 import java.io.*; class Main{ pub..
1. Input 1) String s 2. Output 1) s에 있는 알파벳 중 대소문자가 모두 있는 알파벳을 대문자로 반환 - 여러 개라면 그 중 가장 큰(순서상 뒤에 나오는) 알파벳을 반환 2) 조건을 만족하는 알파벳이 없다면 빈 문자열을 반환 3. Constraint 1) 1
1. Input 1) String arriveAlice 2) String leaveAlice 3) String arriveBob 4) String leaveBob 2. Output 1) Alice는 [arriveAlice, leaveAlice]동안 로마에 있고, Bob은 [arriveBob, leaveBob]동안 로마에 있다. 둘이 동시에 로마에 있는 날 수를 반환 3. Constraint 1) 날짜 형식은 모두 "MM-DD"이다. 2) Alice와 Bob은 로마에 도착한 날 당일에 로마를 출발하지 않았다. 3) 날짜는 모두 같은 연도의 날짜이기 때문에 윤년을 따질 필요가 없다. 4) 2월은 28일까지 있다. 4. Example Input: arriveAlice = "08-15", leaveAlice =..
1. Input 1) String[] words1 2) String[] words2 2. Output 1) words1과 word2에 공통적으로 나타나는 단어 중 각 배열에 1번씩만 나타나는 단어의 수를 반환 3. Constraint 1) 1
1. Input 1) String s 2. Output 1) s를 fancy string으로 만든 결과를 반환 - fancy string이란 같은 문자가 연속으로 3개 이상 나오지 않는 문자열을 말한다. - 이때 s를 fancy string으로 만들기 위해 삭제한 문자의 개수가 최소가 되어야 한다. 3. Constraint 1) 1 Output: "aabaa" Input: s = "aab" -> Output: "aab" 5. Code 1) 첫 코드(2023/06/21) class Solution { public String makeFancyString(String s) { StringBuilder sb = new StringBuilder(); int i = 0; while(i
1. Input 1) String s 2. Output 1) s에 있는 연속된 1의 개수 a와 연속된 0의 개수 b를 모두 세어 찾은 후, 가장 큰 a가 가장 큰 b보다 크면 true, 작거나 같으면 false를 반환 3. Constraint 1) 1 Output: false 설명: - 가장 큰 a=2 > 가장 큰 b=1 이므로 true - 가장 큰 a=3 == 가장 큰 b=3 이므로 false 5. Code 1) 첫 코드(2023/06/20) class Solution { public boolean checkZeroOnes(String s) { int i = 0, ones = 0, zeros = 0; while(izeros; } } - 77%, 56%
1. Input 1) String s 2. Output 1) s에 1이 연속되어 나타나는 부분을 셌을 때, 1개면 true, 아니면 false를 반환 3. Constraint 1) 1 Output: true 설명: - 1이 나타나는 부분이 “1”, “1”의 2개이다. - 1이 나타나는 부분이 “11”의 1개이다. 5. Code 1) 첫 코드(2023/06/20) class Solution { public boolean checkOnesSegment(String s) { int count = 0; // number of segment of 1s for(int i=0 ; i