전체 글 127

[백준 C++] 1152번 - 단어의 개수

1152번 - 단어의 개수 * 문장이 공백으로 시작하든 공백으로 끝나든 상관없이 단어의 개수만 세는 게 중요함. 방법 1. vector사용 메인 함수와 split함수(vector타입의 함수)로 나눠서 구현 * split함수 매개 변수로 입력받은 문자열(input)과 단어 사이를 구분해줄 문자(part)를 사용한다. stringstream은 공백과 '\n'을 제외하고 자료형에 맞는 문자열을 빼오는 역할을 한다. 공백에 따라 분리된 ss를 tmp에 대입하고, tmp를 result에 붙여 넣는 과정을 반복한다. 완성된 result를 리턴한다. * main 함수 string 타입으로 문자열을 입력받는다. split함수를 호출하여 결과를 output 배열에 저장한다. for문을 사용하여 해당 output 배열에 ..

Baekjoon 2022.01.09

[백준 C++] 4673번 - 셀프 넘버

4673번 - 셀프 넘버 크기가 10000인 int 배열 선언하기 for문을 사용하여 셀프 넘버 찾기 셀프 넘버의 배열 값은 0, 셀프 넘버가 아닌 배열 값은 1 배열 값이 0인(셀프 넘버)만 출력 #include using namespace std; int main() { int num[10000] = { 1, }; int tmp; for (int i = 1; i < 10000; i++) { if (i < 10) { num[i + i] = 1; } else if (i < 100) { num[i + i / 10 + i % 10] = 1; } else if (i < 1000) { num[i + i / 100 + i % 100 / 10 + i % 100 % 10] = 1; } else if (i < 1000..

Baekjoon 2022.01.06

[백준 C++] 10809번 - 알파벳 찾기

10809번 - 알파벳 찾기 문자열 입력받기(string 타입) alpha 배열(알파벳 개수만큼) 선언 후, -1로 초기화 'str[i] - 97'를 alpha배열의 인덱스로 사용하여 몇 번째 자리에 해당 알파벳이 존재하는지 배열 값으로 대입 만약 알파벳이 중복으로 존재할 경우 먼저 확인된 자리 번호를 기억하도록 함 alpha배열 출력 #include using namespace std; int main() { string str; cin >> str; int alpha[26] = {}; for (int i = 0; i < 26; i++) { alpha[i] = -1; } for (int i = 0; i < str.length(); i++) { if (alpha[str[i] - 97] != -1) con..

Baekjoon 2022.01.03

[백준 C++] 1157번 - 단어공부

1157번 - 단어 공부 문자열 입력받기 문자열의 길이만큼 동적 배열 할당받기(알파벳 개수를 체크하기 위함) 이중 for문을 통해 입력된 알파벳의 중복 개수 확인하기, 대문자로 비교하기 위해 toupper사용 for문을 통해 가장 많이 사용된 알파벳 찾기 if문을 통해 가장 많이 사용된 알파벳이 하나일 경우와 여러 개일 경우를 구분 delete 하기 #include #include #include //toupper사용을 위해 using namespace std; int main() { string str, re; //입력 문자열, 출력 문자열 cin >> str; int cnt = 0, max = 0, max_cnt = 0; int n = str.length(); int* str_cnt = new int..

Baekjoon 2021.12.31

[백준 C++] 2675번 - 문자열 반복

2675번 - 문자열 반복 몇 개의 케이스를 테스트할지 입력받기(case_Num) 입력받은 case_Num만큼 반복문을 진행하여 각 문자의 반복 횟수와 문자열 입력받기(repeat, str) 문자열의 길이와 반복 횟수로 이중 for문을 실행하여 각각의 문자를 반복 횟수만큼 출력하기 그리고... 이 문제 풀면서 endl의 중요성을 다시 한 번 깨닫게 되었습니다... cout > case_Num; for (int i = 0; i > repeat >> str; for (int j = 0; j < str.length(); j++) { for (int k = 0; k < repeat; k++)..

Baekjoon 2021.11.16

[C++] 11653번 - 소인수분해

11653번 - 소인수분해 처음에는 나누는 수가 무조건 소수여야 한다는 생각에 소수를 먼저 다 걸러내려 했습니다. 하지만 이 방법은 코드도 길어질 거 같고 시간도 많이 걸릴 거 같아서 포기했습니다... ↓ ↓ 방법 1) 다음에는 입력받은 수만큼 반복문을 돌려 나눠 떨어지는 수를 출력하면 되겠구나!라고 생각했고, 그다음으로는 루트 함수(sqrt 함수)를 사용해서 반복문을 돌리는 횟수를 줄이기도 했습니다. #include #include using namespace std; int main() { int N; cin >> N; for (int i = 2; i

Baekjoon 2021.09.30

[자바, C++] 1978번 - 소수 찾기

1978번 - 소수 찾기 코드 설명 입력받을 숫자의 개수(=N) Scanner로 입력받기 N만큼 for문 돌리기 소수인지 아닌지는 isPrime변수를 통해 확인 input_Num이 1일 경우 다음 단계가 필요 없기에 continue input_Num % j == 0 -> 나머지가 0일 경우 소수가 아님 -> isPrime = false for문이 실행되는 동안 isPrime이 true로 유지될 경우 count_Num을 1씩 증가 마지막으로 sc.close()로 스캐너 끝내기 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N ..

Baekjoon 2021.09.26

[C언어] 막대그래프 출력하기

콘솔창에 막대그래프 출력하기 -> 학생들의 점수를 입력받아 막대그래프로 표현하기 학생 수 입력하기 (입력받은 학생 수로 메모리 동적 할당받기) 학생들의 점수 입력하기 입력받은 학생들의 점수를 막대그래프로 출력하기 입력받은 점수를 막대그래프로 출력하기 위해서 ┌┐(시작), ││(중간), ┴┴ (끝)등의 기호가 필요하다. 100점부터 시작해서 0점까지 막대그래프가 출력된다. 만약 학생의 점수가 60점이면 막대그래프의 60점 부분에서 ┌┐기호가 출력되어야 하고, 0점을 만나기 전까지 ││기호가 출력되며, 0점을 만나면 ┴┴ 기호로 마무리한다. 이렇게 출력하기 위해서 조건문을 사용하면 된다. ==> 막대그래프 출력 결과 #include #include #include //system("cls") = 화면 클리어..

C언어 2021.09.13

[C언어] 트리(Tree)

트리(Tree) 트리는 계층적 관계(Hierarchical Relationship)를 표현하는 자료구조이다. 트리구조를 사용하여 컴퓨터의 디렉터리 구조, 집안의 족보, 기업의 조직도 등을 표현할 수 있다. 트리 관련 용어 노드(node) -> 트리의 구성요소, A, B, C, D, E, F와 같은 요소 간선(edge) -> 노드와 노드를 연결하는 연결선 루트 노드(root node) -> 트리 구조에서 최상위에 존재하는 노드, A와 같은 노드 단말 노드(terminal node), 잎사귀 노드(leaf node) -> 아래로 다른 노드가 연결되어 있지 않은 노드, C, D, E, F와 같은 노드 내부 노드(internal node), 비단말 노드(nonterminal node) -> 단말 노드를 제외한 ..