Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- 자바
- 깃 터미널 연동
- 리액트 네이티브 프로젝트 생성
- 팀플회고
- 백준 4358번
- 백준 5525번
- 네트워크
- SQL
- 깃허브 토큰 인증
- 모두의 네트워크
- 깃 연동
- 백준 4949번
- 딥러닝
- 모두를 위한 딥러닝
- HTTP
- 모두의네트워크
- 머신러닝
- 리액트 네이티브
- 깃허브 로그인
- 데베
- 문자열
- 정리
- React Native
- 백준
- 백준 4358 자바
- 데이터베이스
- 지네릭스
- 리액트 네이티브 시작하기
- 스터디
- 모두를위한딥러닝
Archives
- Today
- Total
솜이의 데브로그
[LeetCode] Roman to Integer (java) 본문
https://leetcode.com/problems/roman-to-integer/
문제
풀이
각 알파벳에 대응 하는 숫자를 입력해야하는데, HashMap을 사용해서 각 Character 별 Integer를 입력해둔다.
HashMap<Character, Integer> 로 저장.
그리고 입력받은 문자열의 뒤부터 앞으로 돌아오면서 앞의 수가 더 큰지 확인하고, 해당하는 숫자에 매칭되는 값으로 가져와 더하거나 빼는 방식으로 계산한다.
주의해야할 점은 앞에서부터 비교하면 맨 뒤에 남는 숫자를 처리해줘야하기 때문에, 뒤에서부터 비교하면서 앞으로 오는 방식으로 했다. (어차피 맨 뒤 숫자는 더해주기 때문)
코드
class Solution {
public int romanToInt(String s) {
HashMap<Character, Integer> map = new HashMap();
int sum = 0;
map.put('I', 1);
map.put('V', 5);
map.put('X', 10);
map.put('L', 50);
map.put('C', 100);
map.put('D', 500);
map.put('M', 1000);
sum = map.get(s.charAt(s.length()-1));
for(int i=s.length() -2; i>=0; i--){
int num = map.get(s.charAt(i));
int next = map.get(s.charAt(i+1));
if(num>=next) sum += num;
else sum -= num;
}
return sum;
}
}
Runtime: 4 ms, faster than 93.61% of Java online submissions for Roman to Integer.
Memory Usage: 42.7 MB, less than 85.35% of Java online submissions for Roman to Integer.
기억할 점
HashMap 사용법을 기억해두자. 바로 new HashMap() 으로 선언하고, 해시맵에 저장할 때는 put 을 넣고, 꺼내올 때는 get을 사용한다.
리트코드는 처음 풀어보는데, 입출력을 따로 조절하지 않아도 된다는 것도 알았다. 백준이랑은 조금 다르네..!
'Algorithm > LeetCode' 카테고리의 다른 글
[LeetCode] Remove Element (java) (0) | 2022.04.08 |
---|---|
[LeetCode] Zigzag Conversion (java) (0) | 2022.04.07 |
[LeetCode] Two Sum (Java) (0) | 2022.04.07 |