코린이의 소소한 공부노트

[LeetCode/Easy] 2194. Cells in a Range on an Excel Sheet 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 2194. Cells in a Range on an Excel Sheet

무지맘 2023. 1. 15. 23:40

1. Input

1) 엑셀의 셀 범위를 담은 문자열 s

- 열은 맨 앞에서부터 A, B, C, ...

- 행은 맨 위에서부터 1, 2, 3, ...

- 셀의 주소는 A1, B3 등 열번호가 먼저 온다.

 

2. Output

1) 해당 범위의 셀의 위치를 담은 문자열 List

- 나타내야하는 행렬이 2줄 이상이라면 열번호 - 행번호 순으로 정리한 후 반환한다.

 

3. Constraint

1) s.length == 5

2) 'A' <= s[0] <= s[3] <= 'Z'

3) '1' <= s[1] <= s[4] <= '9'

4) s는 영어 대문자와 숫자, :으로 이루어져 있다.

 

4. Example

Input: s = "K1:L2" -> Output: ["K1","K2","L1","L2"]

Input: s = "A1:F1" -> Output: ["A1","B1","C1","D1","E1","F1"]

 

5. Code

1) 첫 코드(2022/06/12)

char start_col = s.charAt(0);
char last_col = s.charAt(3);
int start_row = s.charAt(1) - '0';
int last_row = s.charAt(4) - '0';

List<String> result = new ArrayList();
String tmp = "";
for(int i=start_col ; i<=last_col ; i++){
    for(int j=start_row ; j<=last_row ; j++){
        tmp = (char)i + "";
        tmp += j + "";
        result.add(tmp);
    } // for j - digit
} // for i - alphabet

return result;

2) 불필요한 부분을 줄여본 코드(2023/01/15)

List<String> result = new ArrayList();
for(int i=s.charAt(0) ; i<=s.charAt(3) ; i++){
    String col = (char)i + "";
    for(int j=s.charAt(1)-'0' ; j<=s.charAt(4)-'0' ; j++){
        result.add(col+j);
    }
}
return result;

- 시간/공간 절약이 많이 됐다.