본문 바로가기

전체 글

(15)
8. 유효한 팰린드롬 문제 설명 문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력하는 프로그램을 작성하세요. 단, 회문을 검사할 때 알파벳만 가지고 회문을 검사하며, 대소문자를 구분하지 않습니다. 입력예시: found7, time: study; Yduts; emit, 7Dnuof 출력예시: YES 문제 풀이 초기 접근 아이디어는 앞에서 사용한 lt, rt를 사용해 중앙으로 이동하면서 모두 문자라면 서로 값이 같은지 비교 하는 방법이다. public String solution(String s) { String result = "YES"; int lt = 0, rt = s.length() -1; while(lt < rt) { if(!Character.isAlphabetic(s.c..
7. 회문 문자열 문제 설명 문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력하는 프로그램을 작성하세요. 단, 회문을 검사할 때 대소문자는 구분하지 않습니다. 입력예시: gooG 출력예시: YES 문제 풀이 일반적인 방법은 포문을 반만 돌면서 양끝을 서로 비교해 다른 부분이 있으면 바로 return fasle를 내보내는 방법이다. public String solution(String s) { String result = "YES"; int len = s.length(); s = s.toLowerCase(); for(int i = 0; i < len/2; i++) { if(s.charAt(i) != s.charAt(len-i-1)) { return "NO"; } } retur..
6. 중복문자제거 문제 설명 소문자로 된 한개의 문자열이 입력되면 중복된 문자를 제거하고 출력하는 프로그램을 작성하세요. 중복이 제거된 문자열의 각 문자는 원래 문자열의 순서를 유지합니다. 입력예시: ksekkset 출력예시: kset 문제 풀이 이상하게도 중복 제거라는 말이 나오면 Set이나 Map이 먼저 떠오른다. 지금 같은 경우는 Key에 대한 Value는 필요 없는 상황이니 먼저 Set으로 문제를 접근해 본다. public String solution(String s) { Set set = new LinkedHashSet(); for(char c : s.toCharArray()) { set.add(c); } Iterator iter = set.iterator(); String result =""; while(ite..