✅ 문자열 ▶️ 숫자 변환
💡 동작 방식
- ASCII 코드표에서
'0'
의 값은 48임
- 문자열의 한글자씩
char
형으로 가져온 뒤, 48을 빼주면 0~9 사이의 숫자가 나옴
- 결과를 수집해서
int
형 변수에 할당
🚧 예시 코드
public class AlphaToInteger {
public int atoi(String Value) {
int result = 0;
boolean negative = false;
int i = 0;
if (value.charAt(i) == '-') {
negative = true;
i++;
}
for (; i < value.length(); i++) {
result *= 10;
result += value.charAt(i) - 48;
}
if (negative) result *= -1;
return result;
}
public static void main(String[] args) {
AlphaToInteger atoi = new AlphaToInteger();
System.out.println(atoi.atoi("12345") + atoi.atoi("-4291"));
System.out.println(atoi.atoi("-4291"));
}
}
✅ 문자열 ▶️ 숫자 변환
💡 동작 방식
- 숫자를 문자로 표현할 때, 기본적으로 한자리씩 표현해야함
'0'
을 표현한 문자는 ASCII 코드 상의 48의 값을 가지고 있음
- 48에 각 자리수를 더하면 해당 수를 표현한 ASCII 코드 값이 나옴
🚧 예시 코드
public class IntegerToAlpha {
public String itoa(int value) {
StringBuilder answer = new StringBuilder();
boolean negative = false;
if (value < 0) {
value *= -1;
negative = true;
}
while (value > 0) {
char digitChar = (char)(value % 10 + '0');
answer.append(digitChar)
value /= 10;
}
return answer.reverse().toString();
}
public static void main(String[] args) {
IntegerToAlpha itoa = new IntegerToAlpha();
System.out.println(itoa.itoa(1234) + itoa.itoa(56789));
}
}
✅ 패턴 매칭_Brute Force
👉 본문 문자열의 특정 위치부터, 패턴 문자열과 완전히 일치하는지 비교후, 일치하지 않는다면 다음 위치에서 비교하여 검증하는 방식
💡 동작 방식
target
문자열과 pattern
문자열의 위치를 저장하는 i
와 j
를 지정
target[i]
와 pattern[j]
가 일치할 경우, i++
, j++
를 함
target[i]
와 pattern[j]
가 불일치할 경우,
a. i = i - j
를 할당 후 i++
를 진행 → i - j
부터 찾는데 실패했기 때문에,
i - j + 1
부터 다시 찾기 위해서
b. j = 0
을 할당 → 패턴의 청므부터 다시 검증해야 하기 때문
j
의 크기가 pattern
의 길이만큼 커지면, pattern
을 찾는데 성공
🚧 예시 코드
public class BFPatternMatching {
public void solution() throws IOException {
BufferedReader reader
= new BufferedReader(new InputStreamReader(System.in));
String target = reader.readLine();
String pattern = reader.readLine();
int tarIdx = 0;
int patIdx = 0;
while (tarIdx < target.length()
&& patIdx < pattern.length()) {
if (target.charAt(tarIdx) != pattern.charAt(patIdx)) {
tarIdx -= patIdx;
patIdx = -1;
}
tarIdx += -1;
patIdx += -1;
}
if (patIdx == pattern.length()) {
System.out.println(tarIdx - patIdx);
} else {
System.out.println("404 Not Found");
}
}
public static void main(String[] args) throws IOException {
new BFPatternMatching().solution();
}
}