- 항상 코딩에서 문제를 발견하고 해결하는 부분이 너무나도 어이없는 부분이듯이 이 문제에서도 어이없게도 println대신 print를 써서 14번동안시도중 13번의 제출동안 해매게 되었습다.... ㅠ.ㅠ
- 처음 문제 제출을 하였을 때 문제점은 replaceAll에 대한 메소드에 대한 것이였다.
public String replaceAll(String regex, String replacement)
- replaceAll에서 regex는 정규표현식을 뜻하는 것이므로 ""으로 감싼 단순한 String으로 써서는 안된다. 때문에 정규 표현식을 사용하여 적어 넣어야 한다. 즉 "%20"이 아닌 "(%20)"이 되어야 한다.
- replacement에서도 마찬가지 이므로 특수문자인 $을 인식시키기 위해서 \\을 사용하여야 합니다.
- 마지막으로 저는 처음부터 찾은 함정입니다. %25 -> %으로 바꿔줘야 하는데 이 부분은 제일 마지막에 해줘야 합니다. 쉽게 '%252a'을 예로 들었을 경우 %252a -> %2a -> * 가 되기 때문입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int cases = sc.nextInt(); while(cases-- > 0) { String uri = sc.next(); uri = uri.replaceAll("(%20)", " "); uri = uri.replaceAll("(%21)", "!"); uri = uri.replaceAll("(%24)", "\\$"); uri = uri.replaceAll("(%28)", "("); uri = uri.replaceAll("(%29)", ")"); uri = uri.replaceAll("(%2a)", "*"); uri = uri.replaceAll("(%25)", "%"); System.out.println(uri); } } } |
- 취준생의 공부 정리 방입니다. algospot 게시물에서 문제 풀이에 대한 포스팅은 언제나 환영이라는 글을 보았기에 정리겸, 공부겸 겸사겸사 문제풀이를 올립니다. 저작권에 문제 있을시 자삭하겠습니다.
- 엉터리일수도(아마도 대부분) 느리기도 하지만 풀었다는 것에 의의를 두고 있습니다.
댓글 없음:
댓글 쓰기