99클럽 코테 스터디 17일차 TIL
💙 JAVA 비기너
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
br.readLine();
String[] skillArr = br.readLine().split("");
br.close();
int answer = 0, lCnt = 0, sCnt = 0;
boolean skillFail = false;
for(String skill : skillArr) {
switch(skill) {
case "L": lCnt++; break;
case "S": sCnt++; break;
case "R":
if(lCnt != 0) { answer++; lCnt--; } else skillFail = true;
break;
case "K":
if(sCnt != 0) { answer++; sCnt--; } else skillFail = true;
break;
default :
answer++;
}
if(skillFail) break;
}
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write(String.valueOf(answer));
bw.flush();
bw.close();
}
}
기술목록인 skillArr
를 한글자씩 돌려서 스킬이 동작한 횟수를 계산하는 로직이다.
사실 문제 자체는 금방 풀었으나 더 나은 코드를 위해 여러번 도전했는데
어째서인지 줄어드는 코드 길이에 비해 메모리와 시간은 점점 늘어났다.🥲
그나마 마지막에 총 기술 사용 횟수 N을 기존에는 int N = Integer.parseInt(br.readLine());
로 받았으나 차피 사용하지도 않을 거 메모리 할당 시키지 말자하고 br.readLine()
만 한 게 가장 좋게 나온 듯하여 마지막 코드를 기록한다.