본문 바로가기

알고리즘43

[C++] 자릿수 더하기(연습문제) 문제는 굉장히 간단하다. 주어진 자연수 N의 각 자릿수의 합을 구해서 반환하는 문제이다. 설계 및 구현 구현 내용은 앞서 진행한 파이썬과 비슷하게 수행하면 될것 같다. 단 파이썬에서 처럼 배열에 담지 않고 문자열로 변환한 자연수를 인덱스를 통해 더해 나가도록 한다. ① 자연수를 문자열로 변환 ② 변환한 문자열을 인덱스 별로 다시 int로 변경하여 더한뒤 해당 값을 반환 ① 주어진 자연수를 string 타입으로 변경하기 위해 string 헤더에 포함된 to_string 함수를 사용하였다. ② 문자열로 변경한 값을 정수형태로 더하기 위해 - '0' 을 수행하였는데 이는 0의 아스키코드값 48 을 활용하여 1~9 에 해당하는 아스키코드 49~57에서 빼면 아스키코드에 해당하는 1자리 자연수 값이 나오는것을 활.. 2020. 6. 17.
[python] 자릿수 더하기(연습문제) 문제는 굉장히 간단하다. 주어진 자연수 N의 각 자릿수의 합을 구해서 반환하는 문제이다. 설계 및 구현 매개변수로는 각자릿수의 합을 구해야하는 자연수 n이 주어지는 함수가 주어진다. 간단한 문제로 주어진 자연수의 모든 자릿수를 하나하나 나눠 리스트에 담아 합을 구하면 된다. ① 자연수를 자릿수 별로 쪼개서 리스트에 담기 ② 리스트에 담긴 모든 원소의합 반환 ① 자연수의 모든 자릿수를 쪼개기 위해 자연수를 문자열로 형변환을 수행하고 각 인덱스별 문자를 다시 정수로 변환하여 리스트에 담아 주었다. ② sum 함수를 이용하여 리스트 안의 원소의 합을 한번에 구하여 반환해주었다. 간단하게 해당 문제의 체점을 통과할 수 있었다. 2020. 6. 17.
[python] 크레인 인형뽑기 게임 (2019 카카오 개발자 겨울 인턴십) 문제 설명 게임개발자인 죠르디는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다. 죠르디는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다. 게임 화면은 1 x 1 크기의 칸들로 이루어진 N x N 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. (위 그림은 5 x 5 크기의 예시입니다). 각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸입니다. 모든 인형은 1 x 1 크기의 격자 한 칸을 차지하며 격자의 가장 아래 칸부터 차곡차곡 쌓여 있습니다. 게임 사용자는 크레인을 좌우로 움직여서 멈춘 위치에서 가장 위에 있는 인형을 집어 올릴 수 있습니다. 집어 올린 인형은 바구니에 쌓이게 되는 데, 이때 바구니의 가장 .. 2020. 6. 16.
[C++] 이상한 문자 만들기(연습문제) 문제는 매개변수로 전달받은 문자열 s를 공백에 따라 나뉘는 단어를 기준으로 단어의 짝수번째 문자는 대문자로, 홀수번째는 소문자로 바꾼 문자열을 리턴해야한다. 단어의 첫번째 문자는 0번 인덱스로 취급하여 짝수로 처리해야 한다. 이때 주의할점은 단어 사이의 공백이 1개가 아닐수도 있고 문자열을 반환할때 해당 공백의 갯수도 그대로 반환해주어야 문제가 해결된다. 설계 및 구현 구현을 위한 내용은 앞서 파이썬에서 생각했으므로 해당 내용을 이용하여 c++에 맞게 구현해보자. ① 변환한 문자열을 저장하기 위한 string 변수 생성 ② 단어별 인덱스를 카운트할 새로운 변수를 생성하여 공백이 아닐경우에 세고 다시 공백이 나오면 초기화하는 작업을 반복하여 대소문자 변경에 활용 ③ string의 경우 문자열 덧셈이 문자열.. 2020. 6. 16.
[python] 이상한 문자 만들기(연습문제) 문제는 매개변수로 전달받은 문자열 s를 공백에 따라 나뉘는 단어를 기준으로 단어의 짝수번째 문자는 대문자로, 홀수번째는 소문자로 바꾼 문자열을 리턴해야한다. 단어의 첫번째 문자는 0번 인덱스로 취급하여 짝수로 처리해야 한다. 이때 주의할점은 단어 사이의 공백이 1개가 아닐수도 있고 문자열을 반환할때 해당 공백의 갯수도 그대로 반환해주어야 문제가 해결된다. 설계 및 구현 구현을 위해 주어진 함수에는 변경해야 하는 문자열 s 가 매개변수로 주어지는 간단한 모습이다. 구현 내용을 생각해보면 주어진 문자열의 단어를 구분할때 공백을 사용하므로 split을 사용해 단어만 추출했었다. 하지만 그럴경우 공백의 개수가 1개가 아닐경우 정상적으로 문제가 풀리지 않아 주어진 문자열을 전부 잘라내 공백일때는 무시하고 공백이 .. 2020. 6. 16.
[C++] 시저 암호(연습문제) 문제의 목표는 간단하다 카이사르 암호라고도 불리는 가장 오래된 암호법인 치환 암호를 구현하면 된다. 주어진 매개변수 s가 'a'이고 n이 2라면 'a'를 2번 밀어낸 'c'로 치환되는 것이다. 'z'에서 1을 밀어내면 'A'가 되는 것이 아닌 다시 처음인 'a'로 되돌아간다. 즉, 소문자는 소문자에서만 대문자는 대문자에서만 공백은 공백으로 치환하면 된다. 설계 및 구현 구현을 위해 주어진 함수는 평문 s와 치환을 위한 암호키 정수 n을 매개변수로 가진다. 구현 내용은 파이썬에서 고안한 내용과 새로 배운것을 활용하여 바로 코드를 작성해 보자. ① 소문자, 대문자 구분하여 조건 분리 ② s의 문자들을 아스키코드 값으로 변경 후 a, A 로부터 몇번째 알파벳인지 확인하여 n을 더해 몇칸 이동인지 확인한다. 이.. 2020. 5. 3.