on
백준 1969 - DNA
백준 1969 - DNA
https://www.acmicpc.net/problem/1969
예전에는 최대한 함수를 작게하고 함수명은 통일해서 solve() 등과 같은 아무의미 없는 이름을 부여했었다. 그러다가
최근 Clean Code를 읽고 조금씩 느낀 내용을 실제 코드에서 적용해보고 싶어서 함수별로 기능 1개씩, 이름은 최대한 주석이 필요없어도 무얼하는 지 알 수있는 서술형식으로 만들어봤는데.. 확실히 보기에도 좋고 코드 수정할때도 한눈에 잘 읽혀서 괜찮은 것 같다. 물론 알고리즘에 이걸 적용하는게 맞는건지는 잘 모르겠지만 배운 내용을 사용하는게 재미있긴하다. 복잡한 시뮬레이션 문제 등에서 사용하면 유용할 것 같다. (물론 알고리즘 문제풀이에서 만큼은 시간도 중요하기 때문에 그렇게 깐깐하게 적용하지는 않을 것 같다.)
★ 풀이
말 그대로 구현하면 된다. hamming distance를 최소값으로 가지는 문자열을 생성하고 그 문자열이 가지는 hamming distance와 함께 출력해주면 된다.
먼저 단어들을 ArrayList에 저장하고 index별로 일일이 비교해주며 제일 많이 등장한 문자를 찾아가면 쉽게 문자열을 구해낼 수 있다.
★ 소스 코드
import java.io.*; import java.util.*; // 좋은 코드 흡수하기! public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); static int n,m; static ArrayList list; public static void main(String[] args) throws IOException { // hamming distance : 길이가 같을때 불일치 문자 수 StringTokenizer st = new StringTokenizer(br.readLine()); n = Integer.parseInt(st.nextToken()); m = Integer.parseInt(st.nextToken()); list = new ArrayList<>(); for(int i = 0; i max) { max = alpha[i]; ret = i; } } return String.valueOf((char)(ret+'A')); } static int findDiffCnt(String str) { int ret = 0; for(int i = 0; i
from http://sweet-smell.tistory.com/97 by ccl(A) rewrite - 2021-11-18 02:28:18