본문 바로가기

알고리즘

(9)
알고리즘(시저 암호 암호화 복호화) 오늘 코딩테스트 보는데 시저 암호 문제가 나왔는데 풀지 못해서.. 다음에 비슷한 유형이 나오면 잊어버리지 말자ㅠ 복호화가 무슨 말인지 몰라서 사전을 찾아봤다. 사전 복호화 또는 디코딩(decoding)은 부호화(encoding)된 데이터를 부호(code)화 되기 전 형태로 바꾸어, 사람이 읽을 수 있는 형태로 되돌려놓는 것이다. 암호화(encryption)의 반대말로서의 복호화는 decryption이라고 부른다. 영어로는 decoding과 decryption이 구분되지만 한국어로는 구분이 되지 않는다. 암호화와 복호화에 같은 열쇠를 사용하는 것을 대칭 열쇠 암호(symmetric-key algorithm)라고 하고, 암호화와 복호화에 다른 열쇠를 사용하는 것을 공개 열쇠 암호(public-key cryp..
TopCoder 전체 탐색! (인싸를 찾아라!) 여러분은 소셜 네트워크 서비스에서 가장 인기 있는 서람을 찾으려고 합니다. 이를 위해"친구의수"를 셉니다. 일단 그들이 서로 친구라면 친구입니다. 또한 c사람이 a사람과 b사람의 공통친구 라면 a사람과 b 사람도 친구입니다. 가장 인기 있는 사람은 친구의 수가 가장 많은 사람입니다. 문자열 자로형의 String [] friends가 주어집니다. 만약 i번째 사람과 j번째 사람과 친구라면 i번째 요소의 j 번째 글자가 y 입니다. 반면 친구가 아니라면 n입니다. 소셜 네트워크 서비스에서 가장 인기 있는 사람의 친구 수를 리턴해주세요 이번 문제는 friends[i] friend[j] 가 친구인지 일단 검색하고 만약 친구가 아니라면 다른 사람과 i 가 j 가 친구인지 알아봐야한다 만약 i와 j가 친구라면 co..
TopCoder 전체 탐색! (회문) 본과 브루스는 대학에서 문자열 이론을 공부하고 있습니다. 브루스는 회문을 좋아합니다. 회문은 앞에부터 읽으나, 뒤에서부터 읽으나 같은 단어를 말합니다, 존은 브루스를 임의의 문자열 s로 회문을 만들어 브루스를 깜짝 놀래켜주고 싶습니다. 이때 존은 문자열 s뒤에 0개 이상의 숫자를 추가해 회문을 생성하려고 한다 존이 생성할 수 있는 가장 짧은 회문의 길이를 리턴하세요. 문제만 보고 역시 아직 바로 어떻게 풀어야할지 모르겠다 가장먼저 생각나는건 임의의 문자열과 회문의 길이수를 더해서 중복되는 단어를 뼤준값을 리턴해주면 되는데 어떤식으로 탐색을 해야할지 전혀 감이 안잡히더라.. abcd 면 dcba 니까 여기서 연속으로 나오는 글자 -1 해주면 되는데 d를 빼주면 되는데.. 생각이 안난다 저자는 문자열 길이에..
TopCoder 전체 탐색! (암호) 문제 TopCoder Security Agency는 새로운 암호화 시스템을 개발했습니다. 이 시스템은 암호화하려고 숫자 리스트를 입력받습니다. 여러분은 TSA의 비밀 정보 수사원입니다. 암호화 과정에서 중요한 부부을 구현하는 것이 여러분의 일이빈다. 여러분은 입력 리스트엣 1개의 값을 선택하고 값을 1 증가시킵니다. 이때 리스트 내부의 모든 숫자 곱이 가장 커져야 합니다. int[] numbers 형태로 숫자 배열이 주어질 때 곱의 최댓갑을 리턴하세요. 리턴값이 2의 62승을 넘는 문제는 나오지 않을 것입니다. 이번문제는 전체 탐색을 한번 풀어봐서 감이조금 왔다 !! 하지만 결국 책의 도움을 다시 받았다 난 이중 포문을 쓰지 않고 Arrays.short를 사용해서 풀려고 했는데 numbers를 어떻게 해..
TopCoder(전체탐색) 즐거운파티 화이트씨는 다재다능한 사람입니다.(모든 것이 그의 관심 대상입니다.) 그래서 그에게는 친구가 많습니다. 하지만 불행하게도 그의 친구들은 다재다능하지 않습니다. 각각의 친구는 2가지 주제에만 관심이 있고 다른 주제로 이야기하는 것을 싫어합니다.그래서 파티를 개최할 때마다 모두가 즐겁게 파티를 보내려면 어떤 친구를 초대할지가 큰 문제입니다. 화이트씨는 그 동안의 경험으로 초대된 친구 모두가 공통의 흥미 있는 화제가 있을 때 파티를 즐긴다는 것을 알았습니다 문자열 배열 first, second 가 주어집니다.화이트씨의 i번째 친구가 흥미있는 화제는 first[i]와 second[i] 입니다.즐거운 파티가 되려면 화이트씨가 초대할 수 있는 친구는 최대 몇 명인지 리턴하세요. [정의 클래스와 함수정의] publi..
키위주스 타로는 맛있는 키위 주스를 준비했습니다. 타로는 0부터 N-1이라 이름을 붙인 N개의 키위 주스를 넣었습니다. 이때 i번째의 병의 용량은 capacities[i]리터이며 타로가 i번째 병에 넣은 키위주스 양을 bottles[i] 리터라고 합니다. 타로는 병에 키위주스를 재분배하려고 하며, 0부터 m-1까지 m회 조작합니다. i번째의 조작은 타로가 병 fromId[i]부터 병 toId[i]에 키위주스를 넣는 것을 의미합니다. 병 fromId[i]가 비어 있거나 병 toId[i]가 꽉 차 있는 순간 , 타로는 더 이상 키위주스를 넣지 않았습니다. N개의 요소를 가진 정수 배열 int[] 를 리턴해주세요. 배열의 i번째 요소는 모든 주스를 쏟는 작업이 완료되고 i번째 병에 남아 있는 키위주스의 양입니다. 병의..
추가적인 프로그래밍 지식 [기억하면 편리한 지식] 필수적인 프로그래밍 지식을 알아봤다. 물론 이외에도 기억하면 편리한것이 많다 그중에서 이번에는 대표적으로 정렬! ,문자열 처리와 연관 배열에 대해 알아보겠다! [정렬] 정렬은 요소를 늘어 놓고 적당한 순서로 바꾸는 것뿐입니다. 프로그래밍 언어에서 지원하는 표준 함수를 사용하면 편리합니다. Arrays.sort(array); 이러한 함수를 사용하면 배열이 정렬됩니다. [문자열처리] 문자열 처리는 프로그래밍 대회에서 자주사용된다고 한다. 대회에서 주어지는 문제의 입력이 문자열로 주어지는 경우가 많고 출력도 문자열로 해야 하는 경우가 많습니다. 1.equals로 동일한지 판단 2.char 를 이용하여 0번째 문자값을 추출 3. 문자열 더하기 4. substring을 이용하여 (시작위치..
반드시 필요한 프로그래밍 지식! [if else] 이 구문은 짝수인지 판별하는 함수다 이처럼 if조건문으로 조건 분기를 만듭니다. 조건 분위기가 없다면 위에서 아래로 실행되는 단순한 프로그램만 만들수 있다. 이정도의 프로그램을 이해할수 있다면 조건문은 충분하다고 한다?? ㅋㅋ 필자는 3을 넣어서 확인해보니 return 0이 나왔다 당연히 0아니지.. 혹시나해서.. ㅋㅋ [for] 같은 처리를 몇번 반복하는 것은 어떤 프로그램에서나 자주 사용한다. 이 함수는 1부터 n까지의 합계를 리턴한다 이런 형태로 for반복문을 작성할 수 있다면 이책을 진행하는 데 문제 없다고 한다 그럼난 문제가 없다고 보면되나?..ㅋㅋㅋ [배열] 배열은 반복문과 함께 자주 사용된다. 배열은 여러 개의 데이터를 한번에 관리할 때 사용한다 배열에 들어가 있는 가장큰 ..