알고리즘 문제풀이/프로그래머스
-
프로그래머스 연습문제 자릿수 더하기 자바, 파이썬 풀이 Level 1 자릿수 더하기 문제 정리 자연수 N이 주어지면 각 자릿수의 합을 구해서 return 하는 solution 함수를 작성해라 문제 풀이 10으로 계속 나눠가며 나머지를 더해준다. 주어진 수 n은 10을 나눈 몫으로 update해준다. n이 10보다 작아질때 까지 반복한다 while문이 탈출하면 10보다 작아진 n을 ans에 마지막으로 더해준다. 예를 들어 123이 있다. 123을 10으로 나눈 나머지는 3이다 // 합 3 123을 10으로 나눈 몫은 12이다. // n=12 12를 10으로 나눈 나머지는 2이다 // 합 3+2 = 5 12를 10으로 나눈 몫은 1이다. // n=1 n이 10보다 작아졌으므로 탈출 마지막 n을 더해 준다 /..
[수학] level1 프로그래머스 자릿수 더하기 자바, 파이썬 풀이프로그래머스 연습문제 자릿수 더하기 자바, 파이썬 풀이 Level 1 자릿수 더하기 문제 정리 자연수 N이 주어지면 각 자릿수의 합을 구해서 return 하는 solution 함수를 작성해라 문제 풀이 10으로 계속 나눠가며 나머지를 더해준다. 주어진 수 n은 10을 나눈 몫으로 update해준다. n이 10보다 작아질때 까지 반복한다 while문이 탈출하면 10보다 작아진 n을 ans에 마지막으로 더해준다. 예를 들어 123이 있다. 123을 10으로 나눈 나머지는 3이다 // 합 3 123을 10으로 나눈 몫은 12이다. // n=12 12를 10으로 나눈 나머지는 2이다 // 합 3+2 = 5 12를 10으로 나눈 몫은 1이다. // n=1 n이 10보다 작아졌으므로 탈출 마지막 n을 더해 준다 /..
2020.04.21 -
프로그래머스 연습문제 이상한 문자 만들기 파이썬 풀이 Level 1 이상한 문자 만들기 문제 정리 단어는 하나 이상의 공백문자로 구분되어 있다. 단어의 짝수번째 알파벳은 대문자로 변경 단어의 홀수번째 알파벳은 소문자로 변경 변경된 문자열을 리턴하여라 첫 번째 글자는 0번째 인덱스로 본다 대소문자 변환(파이썬) upper 함수와 lower함수를 이용하여 바꿀 수 있습니다. 대문자 변환 s = "abc" new = s.upper() print(new) # ABC 소문자 변환 s = "ABC" new = s.lower() print(new) # abc 대소문자 변환(자바) 자바의 경우 string에 대소문자 변환 메소드가 있습니다. 이를 이용합니다. 대문자 변환 String s = "abc"; String n..
[대소문자 변환] level1 프로그래머스 이상한 문자 만들기 파이썬, 자바 풀이프로그래머스 연습문제 이상한 문자 만들기 파이썬 풀이 Level 1 이상한 문자 만들기 문제 정리 단어는 하나 이상의 공백문자로 구분되어 있다. 단어의 짝수번째 알파벳은 대문자로 변경 단어의 홀수번째 알파벳은 소문자로 변경 변경된 문자열을 리턴하여라 첫 번째 글자는 0번째 인덱스로 본다 대소문자 변환(파이썬) upper 함수와 lower함수를 이용하여 바꿀 수 있습니다. 대문자 변환 s = "abc" new = s.upper() print(new) # ABC 소문자 변환 s = "ABC" new = s.lower() print(new) # abc 대소문자 변환(자바) 자바의 경우 string에 대소문자 변환 메소드가 있습니다. 이를 이용합니다. 대문자 변환 String s = "abc"; String n..
2020.04.21 -
프로그래머스 연습문제 약수의 합 풀이 Level 1 약수의 합 문제 정리 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해라 문제 풀이 말 그대로 약수를 모두 구해서 구한 약수를 모두 더해주면 됩니다. n이하의 수로 모두 나누어 보며 나누어 떨어지는 수를 모두 더합니다. 예를 들어 5는 1,2,3,4,5로 모두 나누어 봅니다. 이중에서 나누어 떨어지는 수는 1과 5이므로 답은 6이 됩니다. 약수의 합 Java 코드 public static int solution(int n) { int answer = 0; for(int i=1; i
[수학, for문] Level1 프로그래머스 연습문제 약수의 합 자바, 파이썬 풀이프로그래머스 연습문제 약수의 합 풀이 Level 1 약수의 합 문제 정리 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해라 문제 풀이 말 그대로 약수를 모두 구해서 구한 약수를 모두 더해주면 됩니다. n이하의 수로 모두 나누어 보며 나누어 떨어지는 수를 모두 더합니다. 예를 들어 5는 1,2,3,4,5로 모두 나누어 봅니다. 이중에서 나누어 떨어지는 수는 1과 5이므로 답은 6이 됩니다. 약수의 합 Java 코드 public static int solution(int n) { int answer = 0; for(int i=1; i
2020.04.20 -
프로그래머스 시저암호 풀이 Level 1 시저암호 문제 정리 알파벳이 주어졌을때 n만큼 미룬 문자열을 반환하여라 예를들어 a가 주어졌을때 1만큼 밀면 b가 된다. 공백은 밀어도 그대로 공백이다 z에서 1만큼 밀면 a가 된다. 문제 풀이 이 문제는 아스키 코드 값을 이용하여 풀 수 있습니다. 알파벳 개수: 26개 소문자: 97122 대문자: 6590 문자를 하나하나씩 직접 n만큼 밉니다. 만약 i번째 문자가 공백인 경우 무시합니다. 대문자와 소문자의 경우를 나누어서 풉니다. 대문자의 경우 아스키 코드 값이 65~90 입니다. n만큼 밀고 90을 넘었다면 26만큼 감소시켜 줍니다. 26은 a-z의 개수입니다. 소문자의 경우도 마찬가지로 똑같이 해줍니다. 프로그래머스 시저 암호 자바 코드 주석 달아두었습니다!..
[문자열, 아스키코드] Level1 프로그래머스 시저암호 자바(java) 풀이프로그래머스 시저암호 풀이 Level 1 시저암호 문제 정리 알파벳이 주어졌을때 n만큼 미룬 문자열을 반환하여라 예를들어 a가 주어졌을때 1만큼 밀면 b가 된다. 공백은 밀어도 그대로 공백이다 z에서 1만큼 밀면 a가 된다. 문제 풀이 이 문제는 아스키 코드 값을 이용하여 풀 수 있습니다. 알파벳 개수: 26개 소문자: 97122 대문자: 6590 문자를 하나하나씩 직접 n만큼 밉니다. 만약 i번째 문자가 공백인 경우 무시합니다. 대문자와 소문자의 경우를 나누어서 풉니다. 대문자의 경우 아스키 코드 값이 65~90 입니다. n만큼 밀고 90을 넘었다면 26만큼 감소시켜 줍니다. 26은 a-z의 개수입니다. 소문자의 경우도 마찬가지로 똑같이 해줍니다. 프로그래머스 시저 암호 자바 코드 주석 달아두었습니다!..
2020.04.20 -
프로그래머스 조이스틱 자바(java) 풀이 Level 2 조이스틱 먼저 이야기하자면 이 문제는 그리디로만 풀어야만 답으로 인정해줍니다. 물론 완전탐색으로 풀어도 TC 모두 정답이 나옵니다. 하지만 문제를 제대로 풀기 위해서는 완전탐색으로 풀어야 합니다. 그리디는 아무데서나 쓰는 것이 아니라했는데 여기서 확실히 깨닫습니다... 예시는 아래에서 이야기하겠습니다!! 문제 정리 기본 문자열은 길이가 몇이든 A로만 이루어져 있다. 위, 아래로 조이스틱을 움직이면 알파벳을 변경할 수 있다. 위로 이동하면 A->Z로 이동가능하다. 아래로 이동하면 Z->A로 이동가능하다. 만약 A에서 아래로 이동한다면 'Z'가 된다. 왼쪽, 오른쪽 키는 커서를 움직여 다른 문자위치로 움직일 수 있다. 이때 주어진 문자열..
[완전탐색] Level2 프로그래머스 조이스틱 진짜 정답 풀이(그리디는 안됨)프로그래머스 조이스틱 자바(java) 풀이 Level 2 조이스틱 먼저 이야기하자면 이 문제는 그리디로만 풀어야만 답으로 인정해줍니다. 물론 완전탐색으로 풀어도 TC 모두 정답이 나옵니다. 하지만 문제를 제대로 풀기 위해서는 완전탐색으로 풀어야 합니다. 그리디는 아무데서나 쓰는 것이 아니라했는데 여기서 확실히 깨닫습니다... 예시는 아래에서 이야기하겠습니다!! 문제 정리 기본 문자열은 길이가 몇이든 A로만 이루어져 있다. 위, 아래로 조이스틱을 움직이면 알파벳을 변경할 수 있다. 위로 이동하면 A->Z로 이동가능하다. 아래로 이동하면 Z->A로 이동가능하다. 만약 A에서 아래로 이동한다면 'Z'가 된다. 왼쪽, 오른쪽 키는 커서를 움직여 다른 문자위치로 움직일 수 있다. 이때 주어진 문자열..
2020.04.19 -
프로그래머스 소수 찾기 자바(java) 풀이 Level 1 소수 찾기 문제 정리 N이 주어질떄 1이상 N이하의 수중 소수의 개수를 구하여라 문제 풀이(solution) 소수의 정의와 간단한 최적화만 해준다면 풀 수 있습니다. 어떤수 N이 1과 자기 자신외에 다른 수로 나누어떨어진다면 그 수는 소수가 아닙니다. 즉 1부터 N사이의 수를 모두 2이상 자기이하의 수로 나누어 봅니다. 그래서 나누어떨어지는 수가 하나라도 있다면 그 수는 소수가 아닙니다. 하나도 없다면 그 수는 소수가 됩니다. 하지만 2번 처럼 그 수 전까지 모두 나누어 보면 시간초과가 발생합니다. 그래서 루트 N까지로만 나누어 보면 됩니다. 예를 들어 10이 소수인지 아닌지 구한다면 2부터 루트10 까지의 수로만 나누어 보면 알 수 있습니다. ..
[소수] 프로그래머스 level1 소수찾기 자바(java) 풀이프로그래머스 소수 찾기 자바(java) 풀이 Level 1 소수 찾기 문제 정리 N이 주어질떄 1이상 N이하의 수중 소수의 개수를 구하여라 문제 풀이(solution) 소수의 정의와 간단한 최적화만 해준다면 풀 수 있습니다. 어떤수 N이 1과 자기 자신외에 다른 수로 나누어떨어진다면 그 수는 소수가 아닙니다. 즉 1부터 N사이의 수를 모두 2이상 자기이하의 수로 나누어 봅니다. 그래서 나누어떨어지는 수가 하나라도 있다면 그 수는 소수가 아닙니다. 하나도 없다면 그 수는 소수가 됩니다. 하지만 2번 처럼 그 수 전까지 모두 나누어 보면 시간초과가 발생합니다. 그래서 루트 N까지로만 나누어 보면 됩니다. 예를 들어 10이 소수인지 아닌지 구한다면 2부터 루트10 까지의 수로만 나누어 보면 알 수 있습니다. ..
2020.04.17