그저 컴퓨터에 환경을 저거 3개만 해둬서 하고있는거긴 합니다만...A BCDe wrote:
>> Go를 쓰시는 분은 처음봐요!
지금은 그마저도 포맷하고나서 설정하기 귀찮단 이유로 멍때리고 있음
그저 컴퓨터에 환경을 저거 3개만 해둬서 하고있는거긴 합니다만...A BCDe wrote:
>> Go를 쓰시는 분은 처음봐요!
많이 설정할 필요없는 비주얼 스튜디오 쓰세요..!Sylphi wrote:
그저 컴퓨터에 환경을 저거 3개만 해둬서 하고있는거긴 합니다만...
지금은 그마저도 포맷하고나서 설정하기 귀찮단 이유로 멍때리고 있음
UnLock- wrote:
형님들 제가 과제가 막혀서 그런데 좀 도와주세용 ㅠㅠ문제산타의 양말 찾기
50개의 선물 상자 중에 한 개의 상자에는 산타의 양말이 들어 있다. 다음의 조건에 맞는 양말이 들어있는 상자를 찾는 프로그램을 작성하시오.
1. 상자는 배열을 이용하여 구현, 선물 상자의 무게는 10 양말 상자의 무
게는 1로 가정
2. 상자를 여는 횟수는 1번으로 제한 (배열을 탐색하여 1인 것을 찾는 방
법은 불가)
3. 상자들의 무게를 비교하여 범위를 제한하는 함수는 재귀 함수로 작성(
비교하는 횟수는 6번 이하)
일단 조교님 힌트로는 이진 탐색이랑 비슷한 방법으로 하면 된다는데
도오오오오오오저히 답이 안나옵니다 ㅠㅠ
일단 지금까지 짠 코드는 이따 집가서 보여드릴게용 ㅠㅠ
#include <iostream>
#include <algorithm>
int nyaa(int *arr, unsigned int size, int val) {
if (size == 0)
return -1;
if (size == 1 && arr[0] == val) {
return 0;
}
else if (size == 1 && arr[0] != val) {
return -1;
}
unsigned int del = size / 2;
int left = std::accumulate(arr, arr + del, 0, std::plus<int>());
int right = std::accumulate(arr + del, arr + size, 0, std::plus<int>());
if (left > right) {
int ret = nyaa(arr, del, val);
return (ret != -1) ? (size_t)arr + (size_t)ret - (size_t)arr : ret;
}
else if (left < right) {
int ret = nyaa(arr + del, size - del, val);
return (ret != -1) ? (size_t)arr + (size_t)del + (size_t)ret - (size_t)arr : ret;
}
else {
return -1;
}
}
int main()
{
int arr[50];
std::fill_n(arr, 50, 1);
srand(time(0));
arr[rand()%50] = 10;
int search = nyaa(arr, 50, 10);
if (search == -1) {
std::cout << "Not found" << std::endl;
}
else {
std::cout << "Found: arr[" << search << "] == " << arr[search] << std::endl;
}
}
답이 좀 늦은것인지도 모르겠는데요UnLock- wrote:
형님들 제가 과제가 막혀서 그런데 좀 도와주세용 ㅠㅠ문제산타의 양말 찾기
50개의 선물 상자 중에 한 개의 상자에는 산타의 양말이 들어 있다. 다음의 조건에 맞는 양말이 들어있는 상자를 찾는 프로그램을 작성하시오.
1. 상자는 배열을 이용하여 구현, 선물 상자의 무게는 10 양말 상자의 무
게는 1로 가정
2. 상자를 여는 횟수는 1번으로 제한 (배열을 탐색하여 1인 것을 찾는 방
법은 불가)
3. 상자들의 무게를 비교하여 범위를 제한하는 함수는 재귀 함수로 작성(
비교하는 횟수는 6번 이하)
일단 조교님 힌트로는 이진 탐색이랑 비슷한 방법으로 하면 된다는데
도오오오오오오저히 답이 안나옵니다 ㅠㅠ
일단 지금까지 짠 코드는 이따 집가서 보여드릴게용 ㅠㅠ
#include <stdio.h>
#include <random> // 랜덤을 위한 헤더
#include <time.h> // 랜덤을 위한 헤더
#pragma warning(disable : 4996) // visual studio 2013 또는 그 이상을 사용하지 않는다면 필요없음
#define NUM 50
int box[NUM];
void SetSock() // 상자 안에 양말 넣기
{
srand((unsigned)time(NULL));
int a = rand() % NUM;
printf("%d\n", a); // 확인용 출력
for (int i = 0; i < NUM; i++)
{
if (i == a)
{
box[i] = 11; // 양말이 있는 상자
}
else
{
box[i] = 10; // 양말이 없는 상자
}
}
}
int BoxSum(int a, int b) // 상자들의 무게의 합
{
int w = 0;
for (int i = a; i < b; i++)
{
w += box[i];
}
return w;
}
void FindSock(int a, int b)
{
int n = b - a; // 개수
int delta = n / 3 + 1; // 한 묶음의 상자 개수
int boxSum1 = BoxSum(a, a + delta);
int boxSum2 = BoxSum(a + delta, a + 2 * delta);
if (n == 1)
{
printf("ans : %d\n", a); // 답 출력
return;
}
if (boxSum1 == boxSum2) // 첫번째 상자들과 두번째 상자들의 무게가 같다면
{
FindSock(a + 2 * delta, b);
return;
}
else if (boxSum1 > boxSum2) // 첫번째 상자들이 무겁다면
{
FindSock(a, a + delta);
return;
}
else // 두번째 상자들이 무겁다면
{
FindSock(a + delta, a + 2 * delta);
return;
}
}
int main()
{
SetSock();
FindSock(0, NUM);
}
17(171), 17(170), 16(160)
6(60), 6(61), 5(51)
3(20), 3(21), 0(30)
1(10), 1(11), 1(10)
void swap(int *a, int *b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
void quick(int left, int right, int* arr)
{
int pivot = left;
int i = left + 1;
int j = right;
if(left < right)
{
while(i <= right)
{
if(arr[i] < arr[pivot])
swap(arr[i], arr[++j]);
i++;
}
swap(arr[left], arr[j]);
pivot = j;
quick(left, pivot - 1, arr);
quick(pivot + 1, right, arr);
}
}
Doyak wrote:
그러니 백준 열심히 합시다
#include <stdio.h>이건 if절쪽 if(word[cnt][0]=='0') break; 이놈이 잘못된거 같은데 어떻게 맞게 고쳐야 할지 모르겠음
#include <string.h>
int main() {
char word[50][101];
int i,cnt=0;
while(1){
gets(word[cnt]);
cnt++;
if(word[cnt][0]=='0') break;
}
printf("%d\n",cnt);
for(i=0;i<cnt;i++){
if(i%2==0){
puts(word[i]);
}
}
return 0;
}
#include <stdio.h>
#include <string.h>
int main()
{
char st[101];
int i,len;
while(1){
gets(st);
if(st[0]=='E'&&st[1]=='N'&&st[2]=='D') break;
len=strlen(st);
for(i=len;i>=0;i--){
printf("%c",st[i]);
}
}
return 0;
}
#include <stdio.h>
#include <string.h>
int main()
{
char st[101];
int i,len;
while(1){
scanf("%s",st);
if(st[0]=='E'&&st[1]=='N'&&st[2]=='D'&&st[3]=='\0') break;
len=strlen(st);
for(i=len-1;i>=0;i--){
printf("%c",st[i]);
}
printf("\n");
}
return 0;
}
https://online.acmicpc.org/help/cppDoyak wrote:
엇 그걸 해도 cin은 scanf보다 느리다고 들었는데 잘못된 정보려나요?
visual studio 2013 이상을 사용하신다면 scanf_s를 사용해야겠지만(scanf를 사용하면 에러가 발생합니다), 다른 프로그램에서는 적용되지 않은 것으로 알고 있습니다.Taeyang wrote:
책이 한 7~8년 된 책이라 그런지... scanf_s은 저기서 먹히지도 않음 ㅠㅠ
처음 배울 때는 정말 불편한 것처럼 보이지만 잘 익힌다면 꽤나 유용한 도구로 쓰입니다.Taeyang wrote:
지금 포인터 중간쯤 풀고있는데 이거 어따가 활용하나요 (책에는 안나와있음)
A BCDe wrote:
그래도 진짜 속도를 따진다면 getchar가 최고죠 ㅎㅎ
불편해서 안 쓴다 뿐이지..
2/nDoyak wrote:
BOJ 같이 하실 분 구해요
그룹도 만들면 재미있을 텐데 사람이 있으면...
전 https://www.acmicpc.net/user/djm03178 입니다.
Left wrote:
#offtopic 이 살며시 떠올라버리는건