출처 : https://www.acmicpc.net/problem/9442

정답 : https://github.com/stemp12/acmicpc.net/blob/master/2016.01/9442.cpp

이 문제도 쉽다. 아무래도 오늘은 쉬어가는 날인가보다. 잡는 문제마다 쉽다.

문제를 간략히 설명하면 n을 입력받고 string한문장을 입력받는다. string은 알파벳인데, ABC가 아니라 저렇게 입력하는게 새로운 알파벳 순서가된다.

그다은 n개의 단어가 입력이 되는데 그 단어를 새로 입력받은 알파벳 순서대로 정렬하면 되는 문제이다.

sort함수를 쓰고 cmp 만 따로 처리해주면 간단히 해결되는 문제다.

단, 비교하는 문장이 같을 경우는 true가 아니라 false를 리턴해줘야한다. 

        idx1++; idx2++;
        if (idx2 == str2.length()) return false;
        else if (idx1 == str1.length()) return true;

그래서 나는 이렇게 표현하였는데 만약 idx2의 인덱스가 길이와 같아졌다면(아마 그럼 위 포문에서 결과가 나오지 않은 경우 즉 전부 동일한 경우이다.) 이 경우는 false를 리턴해준다고 하였다. 분명 모두 동일하다면 idx1과 idx2가 동일하겠지만, idx1를 먼저 쓰게 되면 같은경우 true를 리턴하게 되어 함수가 비정상 종료가 된다. 이 점만 주의하면 된다.


'Algorithm' 카테고리의 다른 글

[AC] 1244 스위치 켜고 끄기  (0) 2016.02.23
[AC] 11441 합 구하기  (0) 2016.01.28
[AC] 1244 스위치 켜고 끄기  (0) 2016.01.28
[AC] 1268 임시 반장 정하기  (0) 2016.01.28
[AC] 2526 싸이클  (0) 2016.01.28

출처 : https://www.acmicpc.net/problem/1244

정답 : https://github.com/stemp12/acmicpc.net/blob/master/2016.01/1244.cpp


문제만 봐서는 이 문제는 어려울줄 알았는데...정말 쉬운문제였다. 쓸 내용도 없다. 그냥 시키는대로 코딩하면 끝난다.

단, 문제를 잘 보면 출력을 20개단위로 라인을 구분하라고 하였다. 이부분만 처리해주면 된다. 

이런건 사실 15분내에 풀어야 한다고 생각한다.

'Algorithm' 카테고리의 다른 글

[AC] 11441 합 구하기  (0) 2016.01.28
[AC] 9442 Sort me  (0) 2016.01.28
[AC] 1268 임시 반장 정하기  (0) 2016.01.28
[AC] 2526 싸이클  (0) 2016.01.28
[AC] 2672 여러 직사각형의 전체 면적 구하기  (0) 2016.01.28

출처 : https://www.acmicpc.net/problem/1268

정답 : https://github.com/stemp12/study/blob/master/acmicpc.net/2016.01/1268.cpp


이 문제는 풀이를 어떻게 할지 생각을 하였다. 그런데 인풋의 최대가 1000이고 학년은 최대 5이므로 완전 탐색으로 해도 O(5*1000*1000)이니 O(5000000) 이 되므로 충분히 가능하다는 결론을 얻어 완전탐색으로 하였다. 분명 더 효율적인 알고리즘도 존재할것인데, 이 문제는 그렇지 않아도 될거같아서 이렇게 풀었다.

다른 방법으로는 그래프적으로 생각하면 좀 더 편할것 같기도 하다.

나는 먼저 학년별로 A학생과 나머지 학생들의 반을 비교하여 같은 반이면 반을 확인하는 배열을 만들어 계산하도록 하였다. 
역시 이방법도 위험할수있지만, 최대 인풋이 1000이므로 1000x1000을 하여도 충분하였다.

그리고 최대값이 같을경우 가장 작은 번호만 출력하라고 하였으므로 뒤에서부터 검색하여 앞녀석이 나오게 하였다.

역시 그렇게 어렵지 않은 문제였다. 

'Algorithm' 카테고리의 다른 글

[AC] 9442 Sort me  (0) 2016.01.28
[AC] 1244 스위치 켜고 끄기  (0) 2016.01.28
[AC] 2526 싸이클  (0) 2016.01.28
[AC] 2672 여러 직사각형의 전체 면적 구하기  (0) 2016.01.28
[AC] 1018 체스판 다시 칠하기  (0) 2016.01.28

출처 : https://www.acmicpc.net/problem/2526

정답 : https://github.com/stemp12/study/blob/master/acmicpc.net/2016.01/2526.cpp


이 문제는 과거 풀었지만 재채점으로 오답이 나온 문제다. 그래서 그냥 새로 풀었다. 문제는 어떤 연산을 하였을때 싸이클이 생기는지 물어보는 문제이다. 모든 절차가 간단하고, 어려울게 없다.

그리고 싸이클이 생긴다고하였으니 어떤 수가 중복이 될 가능성은 없다. 중복이 되는 순간이 싸이클이 생기는 순간이다. 그런데 P로 나눈다고 하였고 P는 최대가 97이다. 즉, 값이 98이상은 절대 나오지 않는다. 

그래서 나는 나머지 값을 계속 배열에 담으면서 검사를 하였다. 검사하여 있으면 현재 배열의 총 크기에서 현재 찾은 수의 인덱스를 빼면 싸이클이 되고 없으면 배열에 수를 담는다. 매우 간단한 문제였다.

'Algorithm' 카테고리의 다른 글

[AC] 1244 스위치 켜고 끄기  (0) 2016.01.28
[AC] 1268 임시 반장 정하기  (0) 2016.01.28
[AC] 2672 여러 직사각형의 전체 면적 구하기  (0) 2016.01.28
[AC] 1018 체스판 다시 칠하기  (0) 2016.01.28
[AC] 2512 예산  (0) 2016.01.28

+ Recent posts