본문 바로가기

문제풀이54

[C++] [백준 2941] 크로아티아 알파벳 문제 풀기 전 생각 : /* 먼저 크로아티아 알파벳인지 아닌지 판별하는 함수를 만든다. 문자열로 입력받은후 두 글자씩 위의 함수에 넣는다. 만약 크로아티아 알파벳 이라면 카운트를 1 증가하고 다음 글자를 패스한다. 예외로 dz= 는 세글자 이기 때문에 dz=일 경우 다음 두 글자를 패스한다. 만약 크로아티아 알파벳이 아니라면 그냥 카운트만 1 증가시킨다. 마지막에 카운트를 출력한다. */ #include #include using namespace std; int iscroi(string s){ string croi[8] = {"c=","c-","dz","d-","lj","nj","s=","z="}; for(int i=0 ; i> s; for(int i=0 ; i 0 ){ if(iscroi(s.subst.. 2021. 7. 25.
[C++] [LeetCode 125] Valid Palindrome (pps 5-6) 문제 풀기 전 생각 : /* 문자열의 안에 있는 알파벳과 숫자가 아닌 것들은 제외시키고 남아있는 것들로 앞뒤가 같은지 반복문으로 판별한다. */ class Solution { public: bool isPalindrome(string s) { string str = ""; for(int i=0 ; i 2021. 7. 22.
[C++] [LeetCode 412] Fizz Buzz (pps 5-5) 문제 풀기 전 생각 : /* 반복문을 돌린다. 반복문을 돌릴때 사용하는 변수 i를 사용한다. i 는 1로 시작한다. 이유는 나머지 계산할 때 가독성을 위해서 i가 3과 5로 나누어 떨어질 때 FizzBuzz 를 백터에 추가하고 3으로만 나누어 떨어지면 Fizz 를 백터에 추가한다. 5로만 나누어 떨어지면 Buzz 를 백터에 추가하고 위의 경우들에 해당하지 않는다면 그냥 i를 추가한다. */ class Solution { public: vector fizzBuzz(int n) { vector v; for(int i = 1 ; i 2021. 7. 22.
[C++] [LeetCode 1154] Day of the Year (pps 5-4) 문제 풀기 전 생각 : /* 예전에 날짜 구하는 문제를 수업과제로 해본 적이 있어서 푸는 방법을 알고 있었다. 대신 입력받은 date를 year month day로 나눠야 한다. 이 부분은 split이 없으니 직접 반복문으로 처리해줘야 한다. */ #include class Solution { public: int dayOfYear(string date) { int days[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; int ymd[3]; int i=0,answer=0; string tmp = ""; date += '-'; for(int j=0 ; j 2)++d; return d; } }; 삼항 연산자를 잘 사용하면 저렇게 간단하게도 풀수 있구나 신기하구만요 subst.. 2021. 7. 18.
[JAVA] [백준 5355] 화성 수학 (pps 5-2) 문제 풀기 전 생각 : /* 처음에 c++ 로 풀려고 했는데 문자열을 입력받고 처리하는 과정이 귀찮아져서 split 기능이 내장된 자바를 사용하기로 했다. 자바로 총 몇번을 입력받을지 스캐너로 입력받고 해당 횟수만큼 반복문을 사용한다. 매 반복마다 한 줄 단위로 문자열을 입력받고 입력받은 문자열을 스플릿 한다. 스플릿 한후 가장 첫번째 문자는 숫자이다. 이 숫자를 float 타입으로 변환하고 그 다음에 오는 연산자들에 따라서 더하고 빼고 곱한다. */ import java.util.Scanner; class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); int n = Integer.parseInt(s... 2021. 7. 18.
[C++] [백준 2163] 초콜릿 자르기 (pps 5-1) 문제 풀기 전 생각 : /* 초콜릿을 최소한의 자르기로 1x1로 자르기 위해선 더 긴 모양이 나오도록 자르고 긴 모양으로 나온것을 쪼개는 것이 가장 적은 횟수의 자르기로 자를 수 있다. 예를 들어 ***** ***** ***** ***** 의 5x4 초콜릿이 있다고 한다면 ***** ***** ***** *****로 나누면 3번의 자르기 그리고 ***** 를 * * * * *로 나누기 위해 4번의 자르기 그리고 ****가 세개 있으니 4번씩 4회 자른 셈이다 그렇게 총 19번의 자르기로 자를 수 있다 결국 5x4 = 20 20-1 == 19 a * b - 1 가 답이다. */ https://www.acmicpc.net/problem/2163 2163번: 초콜릿 자르기 정화는 N×M 크기의 초콜릿을 하나 .. 2021. 7. 18.
[C++] [백준 1476] 날짜 계산 (pps 4-9) 문제 풀기 전 생각 : /* e s m 을 모두 입력받고 변수 세개를 선언하고 1으로 초기화한다. count 변수를 만들고 1로 초기화 한다. 반복문으로 이 변수들을 1씩 증가시키며 입력받은 e s m 과 같다면 count을 출력한다. 그리고 조건문으로 e는 15보다 크다면 s 는 28보다 크다면 그리고 m은 19보다 크다면 1로 초기화한다. */ #include using namespace std; int main() { int answer[3]; cin >> answer[0] >> answer[1] >> answer[2]; int e=1,s=1,m=1; int count = 1; while(count++){ if((e == answer[0]) && (s == answer[1]) && (m == ans.. 2021. 7. 18.
[C++] [백준 1712] 손익분기점 (pps 4-8) 문제 풀기 전 생각 : /* 문제를 처음 봤을 때 정답률이 20퍼센트 즈음이라 많이 어려운가 싶어 입출력 예시를 보니 너무 간단한 문제였다. 결국 손익 분기점을 계산하기 위해 한대를 팔때 얻는 순수익을 구해야 한다. 순수익은 c-b 이다 만약 c-b가 0보다 작거나 같으면 해당 제품은 순익분기점이 존재하지 않는다. 그리고 순익분기점은 총 유지비를 c-b로 나누었을때 나오는 값의 1을 더한것이다. */ #include using namespace std; int main() { int a,b,c; cin >> a >> b >> c; if(c 2021. 7. 18.
[C++] [프로그래머스] 하샤드 수 (pps 4-7) 문제 풀기 전 생각 : /* 입력받은 숫자를 문자열로 변환 후 각 문자열의 캐릭터마다 '0'을 뺀 값을 변수 n에 더하고 만약 x%n 이 0이라면 하샤드 수이고 아니라면 하샤드 수가 아니다 */ #include #include using namespace std; bool solution(int x) { string s = to_string(x); int n = 0; for(int i=0 ; i 0) { nSum += nTemp % 10; nTemp /= 10; } return x % nSum == 0 ? true : false; } 아스키 코드와 문자열을 사용하지 않고 나누기와 나머지를 활용해 푼 듯 하다 이렇게 푸는 방법도 있구나~ 나쁘지 않다. 2021. 7. 18.
[C++] [leetCode 258] Add Digits (pps 4-6) 문제 풀기 전 생각 : /* 재귀 함수를 사용해서 풀기로 생각했다. 숫자가 입력되면 그 숫자를 string 타입으로 변환하고 변환된 string을 쪼개서 모두 더하고 더한 것을 재귀함수 형식으로 콜한다. 그리고 만약 입력된 숫자가 10보다 작다면 리턴한다. */ #include class Solution { public: int addDigits(int num) { if(num < 10) return num; string s = to_string(num); int answer = 0; for(int i=0 ; i 2021. 7. 18.
[C++] [LeetCode 342] Power of Four (ops 4-5) 문제 풀기 전 생각 : /* 4의 power of four 인지 구하는 문제이다 반복문으로 입력받은 숫자 n이 1보다 크거나 같다면 반복한다. 반복마다 n이 1이라면 true를 리턴한다. 만약 n이 4로 나누어 떨어지지 않는다면 false를 리턴한다. 그리고 두 경우에 해당하지 않는다면 n을 4로 나누고 다음 반복으로 넘어간다. 반복이 끝났는데도 리턴되지 않았다면 false 를 리턴한다. */ class Solution { public: bool isPowerOfFour(int n) { while(n >= 1){ if(n == 1) return true; if(n%4 != 0) return false; n = n/4; } return false; } }; https://leetcode.com/proble.. 2021. 7. 17.
[C++] [백준 2775] 부녀회장이 될테야 (pps 4-4) 문제 풀기 전 생각 : /* 먼저 14층까지 각 층마다 14개의 집이 있습니다. 입주 조건에 맞춰 모든 집에 필요한 사람 수를 전부 배열에 저장해두고 입력되는 숫자에 맞춰 인덱싱해 출력하도록 했다. */ #include using namespace std; int main() { int n[15][15]={ 0, }; int t,x,y; for(int i=0 ; i> y; cout 2021. 7. 17.