알고리즘 5

[백준] 1919: 에너그램 만들기

문제 https://www.acmicpc.net/problem/1919 1919번: 애너그램 만들기 두 영어 단어가 철자의 순서를 뒤바꾸어 같아질 수 있을 때, 그러한 두 단어를 서로 애너그램 관계에 있다고 한다. 예를 들면 occurs 라는 영어 단어와 succor 는 서로 애너그램 관계에 있는데, occurs www.acmicpc.net 문제 풀이 1. 입력받은 두 문자열의 알파벳 개수를 저장할 두 개의 int형 배열(알파벳 수만큼의 크기)을 선언한다. 2. 입력받은 두 문자열을 전부 문자 배열로 바꾼다. 3. 전부 소문자이기에 대/소문자를 구별할 필요는 없으며, int형 배열 인덱스를 '문자 배열의 아스키 코드 값'을 이용해 접근한다. 4. 두 개의 int형 배열을 돌면서 값을 비교해 개수가 같은 ..

Algorithm/BaekJoon 2023.08.03

[백준] 1157: 단어 공부

문제 https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 문제 풀이 알고리즘은 C로만 많이 풀었어서 모르고 있던 사실이 있다. Java에는 소문자, 대문자로 전부 변환해주는 메소드가 있다는 점이다. 이를 활용해서 문제를 풀면 아스키 코드로 대문자, 소문자를 따로 따지지 않아도 돼서 편리하다. 1. 입력받은 문자열을 전부 대문자로 바꿔 저장한다. 2. 전부 대문자로 변환된 문자열로 문자열 배열을 만든다. 3. 각 알파벳이 몇 번 나오는지 세기 위한 알파벳 개수(26개)의 크기를 가진..

Algorithm/BaekJoon 2023.02.08

[백준] 10973: 이전 순열 (자바/Java)

문제 https://www.acmicpc.net/problem/10973 10973번: 이전 순열 첫째 줄에 입력으로 주어진 순열의 이전에 오는 순열을 출력한다. 만약, 사전순으로 가장 처음에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net 문제 풀이 주어진 순열의 이전 순열을 구하기만 하면 된다. 이전 순열을 구하는 방법은 다음과 같다. 1. p[i-1] > p[i] 만족하는 가장 큰 i를 찾는다. 2. j >= i 면서 p[j] < p[i-1] 만족하는 가장 큰 j를 찾는다. 3. p[i-1] 과 p[j] 를 swap한다. 4. p[i] 부터 순열을 뒤집는다. 내림차순으로. (i-1이 바뀌었으므로 i부터 재정렬 한다고 생각하면 됨) 코드 import java.io.BufferedR..

Algorithm/BaekJoon 2022.11.02

[백준] 10972: 다음 순열 (자바/Java)

문제 https://www.acmicpc.net/problem/10972 10972번: 다음 순열 첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net 문제 풀이 주어진 순열의 다음 순열을 구하기만 하면 된다. 다음 순열을 구하는 방법은 다음과 같다. 1. p[i-1] = i 면서 p[j] > p[i-1] 만족하는 가장 큰 j를 찾는다. 3. p[i-1] 과 p[j] 를 swap한다. 4. p[i] 부터 순열을 뒤집는다. 오름차순으로. (i-1이 바뀌었으므로 i부터 재정렬 한다고 생각하면 됨) 코드 import java.io.BufferedRea..

Algorithm/BaekJoon 2022.11.02

[c언어 문제] #3 난수 배열 정렬, 선택정렬 알고리즘

튜터링 준비하면서 오랜만에 정렬 알고리즘을 사용했는데 기억이 가물가물해져서 정렬 알고리즘 하나씩 우연히 만날 때마다 정리해보겠습니다. 2학기에 알고리즘 수업을 듣게 되는데 그때 아주 도움이 될 것 같습니다 :) 문제 길이가 10인 배열을 선언하고 0부터 99까지의 난수를 넣는다. 이를 정렬하여 출력하는 프로그램을 작성하라. - 배열을 정렬하는 부분을 함수화하라. 코드 #include #include #include void arrSort(int arr[], int len); int main(void) { int arr[10], i; // 1. 배열에 값 넣기 srand(time(NULL)); for (i = 0; i < 10; i++) arr[i] = rand() % 100; // 정렬 전 출력 prin..

Algorithm/C 2022.05.17